使用一些表单创建基于f:ajax的注册,这样每个表单在步骤之后都会消失

使用一些表单创建基于f:ajax的注册,这样每个表单在步骤之后都会消失,ajax,forms,jsf,render,commandbutton,Ajax,Forms,Jsf,Render,Commandbutton,我正在尝试使用JSF通过几个步骤进行注册。一切都基于f:ajax,因为页面不必重新加载 当我按下“显示第一步”按钮时,结果出现。我按下“第二步”按钮,第二步出现。但当我按下“第三步”按钮时,一切都消失了,我看不到任何步骤。“第二步”和“第三步”按钮之间没有区别。我不知道为什么这个代码不起作用 以下是html: <aside class="block"> <h:form id="newform"> <h:commandButton value

我正在尝试使用JSF通过几个步骤进行注册。一切都基于f:ajax,因为页面不必重新加载

当我按下“显示第一步”按钮时,结果出现。我按下“第二步”按钮,第二步出现。但当我按下“第三步”按钮时,一切都消失了,我看不到任何步骤。“第二步”和“第三步”按钮之间没有区别。我不知道为什么这个代码不起作用

以下是html:

<aside class="block">
    <h:form id="newform"> 
        <h:commandButton value="Show First Step">
            <f:ajax event="action" render="-allContent -firstStepForm" listener="#{stateBean.ajaxShowFirstStep}"></f:ajax>
        </h:commandButton>
    </h:form>

    <h:panelGroup id="allContent">
        <h:panelGroup id="firstStep">
            <ui:fragment rendered="#{stateBean.firstStep}">
                <span>AAAA</span>
                <h:form id="firstStepForm">
                    <h:commandButton value="SecondStep">
                        <f:ajax event="action" render="-allContent  -secondStepForm" listener="#{stateBean.ajaxShowSecondStep}"></f:ajax>
                    </h:commandButton>
                </h:form>
            </ui:fragment>
        </h:panelGroup>

        <h:panelGroup id="secondStep">
            <ui:fragment rendered="#{stateBean.secondStep}">
                <span>BBBB</span>
                <h:form id="secondStepForm">
                    <h:commandButton value="ThirdStep">
                        <f:ajax event="action" render="-allContent  -thirdStepForm" listener="#{stateBean.ajaxShowThirdStep}"></f:ajax>
                    </h:commandButton>
                </h:form>
            </ui:fragment>
        </h:panelGroup>

        <h:panelGroup id="thirdStep">
            <ui:fragment rendered="#{stateBean.thirdStep}">
                <span>CCCC</span>
                <h:form id="thirdStepForm">
                    <h:commandButton value="Finish">
                        <f:ajax event="action" render="-allContent" listener="#{stateBean.ajaxShowFinish}"></f:ajax>
                    </h:commandButton>
                </h:form>
            </ui:fragment>
        </h:panelGroup>

        <h:panelGroup id="finish">
            <ui:fragment rendered="#{stateBean.finish}">
                <span>FINISH!!!</span>

            </ui:fragment>
        </h:panelGroup>
    </h:panelGroup>
</aside>
如果我将从f:ajax的render属性中删除“-allContent”,我将能够通过所有步骤直到完成,但是前面和后面的步骤将不会被隐藏

请帮我找到解决办法

我正在使用:

服务器:JBoss应用服务器7.1

JSF:javax.faces-2.2.0-20130214.084242-247.jar

面配置:

<faces-config
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
                        http://java.sun.com/xml/ns/javaee/web-facesconfig_2_2.xsd"
    version="2.2">
</faces-config>

网络模块:3.0

一些答案:

  • 已在web.xml中更改分隔符字符:

    <context-param>
        <param-name>javax.faces.SEPARATOR_CHAR</param-name>
        <param-value>-</param-value>
    </context-param>
    
    
    javax.faces.SEPARATOR_CHAR
    -
    
  • 我尝试在没有h:panelGroup id=“allContent”的情况下渲染,只渲染显示的要隐藏的panelGroup和下一个要显示的panelGroup。结果是一样的

  • 我还尝试使用MyFaces2.1.10、Mojarra 2.0.3-FCS,结果是一样的。BalusC写道,这可能是JSF2.2中修复的一个bug,但我仍然有这个问题


  • 希望有人能帮助我。谢谢你

    我的问题没有找到答案。也许有人可以分享一些可以帮助我的文档链接。也许我在文档中遗漏了什么,或者根本没找到。
    <context-param>
        <param-name>javax.faces.SEPARATOR_CHAR</param-name>
        <param-value>-</param-value>
    </context-param>