2013-04-08 40 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頁',{})導航到下一個頁面

有一個好的一天,

馬蒂亞