Primefaces使用Spring进行移动视图导航:视图不会更改

时间:2013-04-08 10:13:07

标签: spring mobile primefaces

我正在Spring 3.2.0中实现调查问卷,Spring webflow,JSF 2.1.11,Primefaces 3.4.1,Primefaces mobile 0.9.3

规范是将所有问题放在同一物理.xhtml页面中,但分成几个部分,以便一次只显示一个部分。在移动网站中,我使用pm:view查看每个部分。

我需要使用帖子导航,因为所有部分都引用同一个bean来提交数据,我需要在每个部分填充后进行验证。这是我的代码示例:

<pm:page id="page">

      <pm:view id="page1">
         <pm:content>
            <h:form id="page1Form">
                <h:panelGroup id="form1Container" >
                    <p:inputText id="input1" value="${managedBean.property1}" required="true" />

                    <p:commandButton  id="next" action="pm:page2" value="Next" process="form1Container" update="form1Container :page2Form"/>
                </h:panelGroup>
            </h:form>
         </pm:content>
      </pm:view>   

      <pm:view id="page2">
         <pm:content>
            <h:form id="page2Form">
                <h:panelGroup id="form2Container" >
                    <p:inputText id="input2" value="${managedBean.property2}" required="true" />

                    <h:commandButton id="registerSave" action="save" value="Save"/>
                </h:panelGroup>
            </h:form>
         </pm:content>
      </pm:view>   

</pm:page>

验证正确触发,并且在按下“下一步”按钮时更新了input1的值“。此外,我可以在服务器日志上看到ajax请求。但是,页面1上的页面只是刷新,页面2永远不会显示。页面中没有验证错误,我可以看到firebugs请求/响应中没有错误。

到达page2我做错了什么?

我可以看到在生成的html页面中使用css隐藏了page2的内容,我可以尝试使用javascript使其可见但是html中缺少所有css类(我认为jQuery为性能做了这一点)。有一种方法可以使用javascript作为此问题的解决方法吗?

再次感谢,

马蒂亚

P.S。我也尝试在“下一步”按钮中使用ajax =“false”,但它仍然不起作用。我还尝试将动作字符串作为bean方法的返回对象,但没有运气。

1 个答案:

答案 0 :(得分:0)

我在旧的Primefaces移动导航风格中找到了一种解决方法。在ajax命令按钮上,我直接调用PrimeFaces.navigate,检查验证错误。代码是这样的:

<p:commandButton  id="nextButton_page1" action="pm:page2" oncomplete="if (!args.validationFailed) PrimeFaces.navigate('#page2',{});" value="Next" process="form1Container" update="form1Container :page2Form"/>

上一个按钮类似的东西。这适用于我:ajax调用处理form1的值,如果发生任何验证错误则导航停止,或者如果一切正常则转到page2。

if(!args.validationFailed)检查验证错误

PrimeFaces.navigate('#page2',{})导航到下一页

祝你有个美好的一天,

马蒂亚