2013-08-06 106 views
1

我是JSF的初學者,我有一個selectonemenu項目的問題。當我選擇一個項目,例如'FirstLabel'時,應該顯示outputpanel。但是,selectone菜單不會更新我的選擇。我使用primefaces 3.1庫。我可以如何解決這個問題。謝謝你的幫助。JSF selectonemenu不更新

  <p:selectOneMenu value="#{denemeView.str}" effect="fold" editable="true" > 
       <f:selectItem itemLabel="Please choose!." itemValue="" /> 
       <f:selectItem itemLabel="FirstLabel" itemValue="1" /> 

       <f:selectItem itemLabel="SecondLabel" itemValue="2" /> 

       <p:ajax process="@this" update=":Form2:panel1"/> 
       <p:ajax process="@this" update=":Form2:panel2"/> 
      </p:selectOneMenu> 


     </p:outputPanel> 


     <p:outputPanel id="panel1" rendered="#{denemeView.str=='1'}"> 

      <h:outputText value="Output: * " /> 
      <p:inputText id="out" value="#{denemeView.islem}" /> 



     </p:outputPanel> 

     <p:outputPanel id="panel2" rendered="#{denemeView.str=='2'}"> 

      <h:outputText value="True choice! " /> 

     </p:outputPanel> 

回答

1

如果JSF組件具有rendered="false"組則它不redered(組件對象不是在對象樹中存在的話),並且可以不使用<p:ajax update="someId"/><f:ajax render="someId"/>被更新。你需要做的是將這兩個面板包裹在外面板中並更新那個面板。類似這樣的:

<p:ajax process="@this" update="outerPanel"/> 
... 
<p:outputPanel id="outerPanel"> 
<p:outputPanel id="panel1" rendered="#{denemeView.str=='1'}"> 
     <h:outputText value="Output: * " /> 
     <p:inputText id="out" value="#{denemeView.islem}" /> 
</p:outputPanel> 

<p:outputPanel id="panel2" rendered="#{denemeView.str=='2'}"> 
     <h:outputText value="True choice! " /> 
</p:outputPanel> 
</p:outputPanel> 

請參閱here對於類似的問題。

+0

感謝您的幫助。我嘗試用您的建議和 Deniz

+0

我檢查了代碼,它適用於我的情況 - bean值是否設置正確? – dratewka

+0

ın豆,有字符串str,它有setter和getter.My朋友編碼像這樣與primefaces 2.2.1庫,也它工作。這個問題是從庫中產生的?我使用了primefaces 3.1。 – Deniz