2011-12-14 23 views
3

私はドロップダウンメニューを持っています。ドロップダウンメニューから特定の値を選択すると、対応するデータテーブルを表示する必要があります。それとドロップダウンメニューから2番目の選択には、値以前のデータテーブルには、非表示にすると、第2の値に対応するデータテーブルには、移入すべきであり、そう にここに私のコードは次のとおりです。jsf2.0とprimefacesのドロップダウンメニューから値を選択してデータテーブルを非表示にする方法

<h:selectOneMenu value="#{bean.value}" 
styleClass="ui-inputfield ui-widget ui-state-default ui-corner-all" 
style="width:100px;"> 
<f:selectItem itemLabel="Select" itemValue="Select" /> 
<f:selectItem itemLabel="5" itemValue="5" id="mySelectedValue1" onclick="hideOrShow(??);"/> 
<f:selectItem itemLabel="6" itemValue="6" id="mySelectedValue2" onclick="hideOrShow(??);"/> 
<f:selectItem itemLabel="7" itemValue="7" id="mySelectedValue3" onclick="hideOrShow(??);"/>  
    </h:selectOneMenu> 


<script type="text/javascript"> 
function hideOrShow(show) { 
var obj = document.getElementById("myForm:myPanel"); 
    if (show) { 
     obj.style.display = "block"; 
    } 
else { 
     obj.style.display = "none"; 
    } 
    } </script> 


<h:panelGrid id="myPanel" columns="2"> 
    ... 
</h:panelGrid> 

私の質問は、パラメータとして配置するものですHideOrShow()で?? Javaスクリプト関数がそれを識別するようにします。そして最初にどのようにすべてのデータテーブルが隠されるのでしょうか?

感謝:

答えて

5

好奇心JSFとの組み合わせで、プレーンJSを使用することが多いため、JSFの状態管理がどのように動作するか道のトラブルやunintuitivenessのためのレシピです。純粋なJSFを使用して問題を解決するほうがよいでしょう。それはしばしばより単純な見方に終わることもあります。この特定の目的には、表示/非表示のコンポーネントのrendered属性と組み合わせてJSF-<f:ajax>を使用できます。

キックオフ例:

<h:form> 
    <h:selectOneMenu value="#{bean.value}"> 
     <f:selectItem itemLabel="Select" itemValue="#{null}" /> 
     <f:selectItem itemLabel="5" itemValue="5" /> 
     <f:selectItem itemLabel="6" itemValue="6" /> 
     <f:selectItem itemLabel="7" itemValue="7" /> 
     <f:ajax render="tables" /> 
    </h:selectOneMenu> 

    <h:panelGroup id="tables"> 
     <h:dataTable value="#{bean.list5}" rendered="#{bean.value == 5}"> 
      ... 
     </h:dataTable> 
     <h:dataTable value="#{bean.list6}" rendered="#{bean.value == 6}"> 
      ... 
     </h:dataTable> 
     <h:dataTable value="#{bean.list7}" rendered="#{bean.value == 7}"> 
      ... 
     </h:dataTable> 
    </h:panelGroup> 
</h:form> 

、テーブル自体が入力成分を含有するたびにBeanがビュー範囲にあることを確認します。

+0

ありがとうございます。 – curious

+0

ドロップダウンの項目が多いので、ドロップダウンメニューからの選択に応じて列の値も変更される単一のデータテーブルを持つことは可能ですか? – curious

+0

」または「」の代わりに「」を使用してください。 http://www.primefaces.org/showcase/ui/datatableDynamicColumns.jsfも参照してください。 – BalusC

関連する問題