如何重置primefaces向导的步骤?

问题描述 投票:0回答:6

我使用primefaces

<p:wizard>
并且我一步步注册。如果注册成功结束,向导的步骤是第一个,但如果我继续新记录或用户,向导无法添加新记录。它正在更新以前的记录/用户.如何在系列中添加新记录? 另一个问题;当它返回到第一步时,它无法重置该字段。我该怎么办? 其提交按钮的代码;

<p:commandButton immediate="true" value="Submit" update="@parent,wiz1,growl,panel"
                            actionListener="#{OgrenciKayit.save}" oncomplete="wiz.loadStep (wiz.cfg.steps [0], true)" />

如果向导提交,则返回第一步。

oncomplete="wiz.loadStep (wiz.cfg.steps [0], true)"

和动作监听器

public void save(ActionEvent actionEvent) {
        tx = session.beginTransaction();
        session.save(ogrenci);
        tx.commit();
        FacesMessage msg = new FacesMessage("Başarılı", "Hoşgeldin :"
                + ogrenci.getAd());
        FacesContext.getCurrentInstance().addMessage(null, msg);
    }

等待您的想法.. (附加信息我使用 Jsf 2.2、Tomcat 7.0.50、Hibernate 4.3.5.final、Primefaces、Shiro)

jquery ajax hibernate jsf primefaces
6个回答
9
投票
<p:wizard widgetVar="wiz">
   <p:tab id="tab0">  ...  </p:tab>
   <p:tab id="tab1"> ...
      <p:commandButton value="Jump to tabId"
          actionListener="#{actionTodo.jump}"
          oncomplete="PF('wiz').loadStep('tab0', false)" />
   </p:tab>
 </p:wizard>

这对我在 PrimeFaces 5.0 上有效。请注意,您只需向 loadStep 方法提供 tabId 即可。另外,我们应该用

"PF('widgetVarId')"
来称呼 PF。


3
投票
org.primefaces.context.RequestContext

RequestContext context = RequestContext.getCurrentInstance();
context.reset("myForm");

3
投票

我在提交组件上使用这个 javascript 函数和 oncomplete 处理程序:

提交组件:

oncomplete="resetWizard(args, PF('wizardWigetVar'));"

Javascript:

/**
 * Resets the wizard by loading its first step.
 * 
 * @param args
 * @param wizard
 * 
 * @returns
 */
function resetWizard(args, wizard)
{
    if (!args.validationFailed)
    {
        var firstStep = wizard.cfg.steps[0];
        if (wizard.currentStep != firstStep)
            wizard.loadStep(firstStep, true);
    }
}

0
投票

为了解决这个问题,我必须合并答案,否则每当我单击编辑按钮时,就会显示我在上一版本中停止的步骤。

控制器:

public void edit() {
    PrimeFaces.current().executeScript("PF('wizardOrcamento').loadStep('tabCliente', false)");
}

XHTML:

<p:commandButton action="#{orcamentoController.edit}" [...]>
    <f:setPropertyActionListener [...] />
</p:commandButton>

我希望这可以帮助别人。


0
投票

自 2025 年起,PrimeFaces 14.0.11 和 15.0.0+ 添加了新的

widget.reset()
方法,可带您进入向导中的第一步。

参见问题:https://github.com/primefaces/primefaces/issues/13188 公关:https://github.com/primefaces/primefaces/pull/13197

使用示例:

XHTML:

<p:wizard showNavBar="false" widgetVar="wiz">

JS:

PF('wiz').reset();

-3
投票
public void save(ActionEvent actionEvent) {
    tx = session.beginTransaction();
    session.save(ogrenci);
    tx.commit();
    FacesMessage msg = new FacesMessage("Başarılı", "Hoşgeldin :"
            + ogrenci.getAd());
    FacesContext.getCurrentInstance().addMessage(null, msg);

ogrenci = new Ogrenci();

}
© www.soinside.com 2019 - 2024. All rights reserved.