2013-04-08 75 views
2

我在Spring 3.2.0,春天的Webflow,JSF 2.1.11,Primefaces 3.4.1实施的问卷调查,Primefaces移动0.9.3Primefaces与Spring移动视图导航:视图不会更改

规范是将所有问题放在同一个physic .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> 

正确验证火灾和输入1的值被更新的“下一个”按钮”的按下此外,我可以看到服务器日志中一个Ajax请求但该页面。只刷新第1页的剩余页面,页面2从不显示,页面中没有验证错误,我可以看到萤火虫在请求/响应中没有错误。

我可以看到,页面2的内容隐藏在生成的HTML页面中的CSS,我可以尝试使用JavaScript来使其可见e但是所有的css类都从html中丢失了(我认为jQuery是为了演出而做的)。有一种方法可以将javascript用作此问题的解决方法?再次

感谢,

马蒂亚

附:我也尝试在“下一步”按钮中使用ajax =“false”,但它仍然不起作用。我也试着把action字符串作为bean方法的返回对象,但没有运气。

回答

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。

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

PrimeFaces.navigate( '#第2页',{})导航到下一个页面

有一个好的一天,

马蒂亚