0

我在对话框中有 p:wizard 。当我单击下一个按钮时,什么也没有发生。我什至放了 h:messages 来捕捉任何验证问题。但什么也没有出现。这是我的代码:

 <html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:cc="http://java.sun.com/jsf/composite"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui">
    <cc:interface>
        <cc:attribute name="actionNewComplete" required="false"/>
        <cc:attribute name="update" required="false"/>
    </cc:interface>
    <cc:implementation>
        <h:form prependId="false" id="formCreateOffre">
            <h:messages showDetail="true"/>
            <p:wizard id="wizardOffre" widgetVar="widgetWizardOffre" showNavBar="false" flowListener="#{offreController.handleFlow}">
                <p:tab id="tabOffre" title="Offre">
                    <p:panelGrid styleClass="ui-net-table">
                        <p:row>
                            <p:column>
                                <p:outputLabel value="#{bundle.CreateOffreLabel_participant}" for="participant" />
                                <p:inputText styleClass="text" style="width: 50px;" id="participant" value="#{offreController.selected.participant}" title="#{bundle.CreateOffreTitle_participant}" />
                            </p:column>
                        </p:row>

                        <p:row>
                            <p:column>
                                <p:outputLabel value="#{bundle.CreateOffreLabel_rendezvous}" for="rendezvous" />
                                <p:calendar styleClass="text" id="rendezvous" value="#{offreController.selected.rendezvous}" disabled="#{offreController.selected.realisation eq null}" title="#{bundle.CreateOffreTitle_rendezvous}">
                                    <p:ajax event="dateSelect" update="delais"/>
                                </p:calendar>
                            </p:column>
                        </p:row>                                             

                    </p:panelGrid>
                </p:tab>
                <p:tab id="tabOffreClient" title="Client">
                    clients
                </p:tab>
                <p:tab id="tabOffreActivite" title="Activité">
                    activités
                </p:tab>
                <p:tab id="tabOffreService" title="Service">
                    services
                </p:tab>
            </p:wizard> 
            <p:commandButton value="Précédent" onclick="widgetWizardOffre.back();" icon="ui-icon-seek-prev"/>
            <p:commandButton value="Suivant" onclick="widgetWizardOffre.next();" icon="ui-icon-seek-next" iconPos="right"/>
        </h:form>
    </cc:implementation>
</html>

这是bean的代码。

@ManagedBean(name = "offreController")
@SessionScoped
public class OffreController extends AbstractController<Offre> {

    @ManagedProperty(value = "#{navigationController}")
    private NavigationController navigation;
    @EJB
    private app.tfe.netescape.business.OffreFacade ejbFacade;

    public OffreController() {
    }

    public String handleFlow(FlowEvent event) {
        return event.getNewStep();
    }

调用 flowListener 方法并返回下一步,但没有任何反应。

4

3 回答 3

1

确保您在代码中引用的每个 bean 属性都有一个 getter 和 setter。如果 PrimeFaces 无法同时找到 getter 和 setter,那么 PrimeFaces 将以这种方式在向导步骤中不正常地失败 - 即使对于您只是阅读的属性也是如此。

附录:此外,getter 和 setter 应该只做一个 get 和一组本地值。PrimeFaces 不能很好地处理其他 getter 和 setter(我无法解释为什么这不起作用,但我确实观察到了它)。如果您有任何其他逻辑,则应在您的侦听器中对其进行处理。

于 2013-08-02T04:33:35.940 回答
0

你用的是什么版本的primefaces?

如果是 5.1 版更改事件 onclick:

onclick="widgetWizardOffre.next();"

由--->

onclick="PF('widgetWizardOffre').next();"

并使用相同的事件返回: onclick="PF('widgetWizardOffre').back();"

于 2015-01-22T07:58:41.990 回答
-1

您已经隐藏了导航栏(下一步和后退按钮),那么导航栏如何工作?删除showNavBar="false",默认为true。

于 2013-08-01T12:16:28.390 回答