2014-12-19 88 views
0

我想根據在<h:selectOneMenu>中選擇的值顯示和隱藏<h:panelGrid>在h:selectOneMenu中選擇的值的基礎上顯示/隱藏h:panelGrid

的代碼是:

<p:dialog id="logClassDlg" header="Log Class Teached" widgetVar="logClass" modal="true" > 
    <h:form> 
     <p:growl id="growl" showDetail="true" /> 
     <h:panelGrid id="logClassPanelGrd1" columns="2"> 

      <h:outputLabel for="class" value="Class: " /> 
      <h:selectOneMenu id="class" value="#{logClassBean.classLog.classTitle}"> 
       <f:selectItem itemValue="Reading" itemLabel="Reading" /> 
       <f:selectItem itemValue="Memorization" itemLabel="Memorization" /> 
       <f:selectItem itemValue="Translation" itemLabel="Translation" /> 
       <f:selectItem itemValue="Language" itemLabel="Language" /> 
       <f:selectItem itemValue="Grammer" itemLabel="Grammer" /> 
       <f:ajax render="logClassPanelGrdBook" /> 
      </h:selectOneMenu> 

     </h:panelGrid> 

     <h:panelGrid id="logClassPanelGrdBook" columns="2" rendered="#{(logClassBean.classLog.classTitle ne 'Language') and (logClassBean.classLog.classTitle ne 'Grammar')}"> 
      <p:outputLabel value="Book" /> 
      <h:selectOneMenu id="book" value="#{logClassBean.classLog.classStatus}"> 
       <f:selectItem itemValue="first" itemLabel="first" /> 
       <f:selectItem itemValue="second" itemLabel="second" /> 
       <f:selectItem itemValue="third" itemLabel="third" /> 
       <f:selectItem itemValue="fourth" itemLabel="fourth" /> 
       <f:selectItem itemValue="fifth" itemLabel="fifth" /> 
      </h:selectOneMenu> 
     </h:panelGrid> 

正如你可以看到我想要顯示的面板網格logClassPanelGrdBook只有當所選值不語和文法即

rendered="#{(logClassBean.classLog.classTitle ne 'Language') and (logClassBean.classLog.classTitle ne 'Grammar')}" 

但面板網格無論選擇哪個值都會顯示,當其他值(閱讀,記憶和翻譯)被選中時,它應該隱藏。

任何幫助/指針,將不勝感激。謝謝。

回答

1

部分<f:ajax render="logClassPanelGrdBook" />將不會更新並以此方式重新檢查panelGrid的呈現函數。您將需要更新其父元素。

例如,你可以用<h:panelGroup>包裝它:

 <h:panelGrid id="logClassPanelGrd1" columns="2"> 

      <h:outputLabel for="class" value="Class: " /> 
      <h:selectOneMenu id="class" value="#{logClassBean.classLog.classTitle}"> 
       <f:selectItem itemValue="Reading" itemLabel="Reading" /> 
       <f:selectItem itemValue="Memorization" itemLabel="Memorization" /> 
       <f:selectItem itemValue="Translation" itemLabel="Translation" /> 
       <f:selectItem itemValue="Language" itemLabel="Language" /> 
       <f:selectItem itemValue="Grammar" itemLabel="Grammar" /> 
       <f:ajax render="logClassPanelGrdBook" /> 
      </h:selectOneMenu> 

     </h:panelGrid> 
     <h:panelGroup id="logClassPanelGrdBook"> 
     <h:panelGrid columns="2" rendered="#{(logClassBean.classLog.classTitle ne 'Language') and (logClassBean.classLog.classTitle ne 'Grammar')}"> 
      <p:outputLabel value="Book" /> 
      <h:selectOneMenu id="book" value="#{logClassBean.classLog.classStatus}"> 
       <f:selectItem itemValue="first" itemLabel="first" /> 
       <f:selectItem itemValue="second" itemLabel="second" /> 
       <f:selectItem itemValue="third" itemLabel="third" /> 
       <f:selectItem itemValue="fourth" itemLabel="fourth" /> 
       <f:selectItem itemValue="fifth" itemLabel="fifth" /> 
      </h:selectOneMenu> 
     </h:panelGrid> 
     <h:panelGroup> 

我也改變了選擇項目的值從格拉默到語法,因爲它沒有匹配渲染屬性的值。

如果這不起作用,您還應該檢查當您單擊<h:selectOneMenu>時是否正確設置了bean值。

+0

謝謝。已經知道我必須渲染@form。謝謝你的幫助。 PS:Grammer的東西被用戶編輯:Tiny,原來的代碼不是那樣的。謝謝你的幫助。 – Hassan 2014-12-20 06:47:51