【问题标题】:Primefaces mobile view navigation with Spring: view does not change使用 Spring 的 Primefaces 移动视图导航:视图不会改变
【发布时间】:2013-03-30 09:11:56
【问题描述】:

我正在 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 请求。但是页面只是刷新在 page1 上,page2 永远不会显示。页面中没有验证错误,我可以通过萤火虫看到请求/响应中没有错误。

我做错了什么才能到达第 2 页?

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

再次感谢,

马蒂亚

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

【问题讨论】:

    标签: spring mobile primefaces


    【解决方案1】:

    我在旧的 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',{}) 导航到下一页

    祝你有美好的一天,

    马蒂亚

    【讨论】:

      猜你喜欢
      • 2020-12-23
      • 1970-01-01
      • 1970-01-01
      • 2015-01-23
      • 2022-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多