4

のあるページが<h:selectOneMenu>あり、メニューの選択した値に応じて、いくつかのフィールドまたは他のフィールドを表示したいと思います。これは可能ですか?もしそうなら、どのように?

<h:selectOneMenu id="productname" value="#{product.productname}" required="true"> 
    <f:selectItem itemLabel="select" itemValue="null" />  
    <f:selectItem itemLabel="Detetgent" itemValue="Detergent"/>  
    <f:selectItem itemLabel="Dishwash" itemValue="Dishwash" />  
    <f:selectItem itemLabel="Powder" itemValue="Powder" />  
    <f:selectItem itemLabel="Liquid" itemValue="Liquid" />       
</h:selectOneMenu>
<h:panelGroup rendered="Detergernt">
    <p>This will be shown if the selected item Detergent.</p>
</h:panelGroup>
<h:panelGroup >
    <p>This will be shown if the selected item Dishwash.</p>
</h:panelGroup>
<h:panelGroup >
    <p>This will be shown if the selected item equal to powder.</p>
</h:panelGroup>
<h:panelGroup >
    <p>This will be shown if the selected item equals to Liquid.</p>
</h:panelGroup>
4

3 に答える 3

5

目的の値が返されるrendered場合は、属性をチェックインする必要があります。#{product.productname}これらすべてのコンポーネントを更新するには、条件付きでレンダリングされたすべての<f:ajax>コンポーネントの共通の親コンポーネント(常にレンダリングされます)を更新するをメニューに追加する必要があります。

<h:selectOneMenu id="productname" value="#{product.productname}" required="true"> 
    <f:selectItem itemLabel="select" itemValue="null" />
    <f:selectItem itemLabel="Detetgent" itemValue="Detergent"/>
    <f:selectItem itemLabel="Dishwash" itemValue="Dishwash" />
    <f:selectItem itemLabel="Powder" itemValue="Powder" />
    <f:selectItem itemLabel="Liquid" itemValue="Liquid" />
    <f:ajax render="groups" />
</h:selectOneMenu>
<h:panelGroup id="groups">
    <h:panelGroup rendered="#{product.productname == 'Detergent'}">
        <p>This will be shown if the selected item Detergent.</p>
    </h:panelGroup>
    <h:panelGroup rendered="#{product.productname == 'Dishwash'}">
        <p>This will be shown if the selected item Dishwash.</p>
    </h:panelGroup>
    <h:panelGroup rendered="#{product.productname == 'Powder'}">
        <p>This will be shown if the selected item equal to Powder.</p>
    </h:panelGroup>
    <h:panelGroup rendered="#{product.productname == 'Liquid'}">
        <p>This will be shown if the selected item equals to Liquid.</p>
    </h:panelGroup>
</h:panelGroup>

参照:

于 2012-11-29T11:30:39.757 に答える
1
<h:selectOneMenu id="productname" value="#{product.productname}" required="true"> 
    <f:selectItem itemLabel="select" itemValue="null" />  
    <f:selectItem itemLabel="Detetgent" itemValue="Detergent"/>  
    <f:selectItem itemLabel="Dishwash" itemValue="Dishwash" />  
    <f:selectItem itemLabel="Powder" itemValue="Powder" />  
    <f:selectItem itemLabel="Liquid" itemValue="Liquid" />    
    <p:ajax event="onselect" update="selectedOp" listener="#{product.updateSelectedValue}" />
</h:selectOneMenu>
<h:panelGroup rendered="{product.updateSelectedValue ne null}" id="selectedOp">
    <p>This will be show selected value</p>
    #{product.updateSelectedValue}
</h:panelGroup>

これは、ページのドロップダウンから選択した値を表示する方法です。PrimeFacesを使用していると想定しているため、<p:ajax>内でajaxイベントタグを使用します<h:selectOneMenu >。また、に条件を追加して、<h:panelGroup rendered="{product.updateSelectedValue ne null}">選択した値が。以外の場合に表示されるようにしますnull

于 2012-11-29T09:17:51.050 に答える
0

ええ、あなたはこれを達成することができます。ページ自体で説明しやすいように、ページを貼り付けてください。

アイデアは、非表示にする必要があるフィールドの<a4j:outputPanel>コンテナーおよびラッパーとして を使用することです。 の選択した値は、の属性で使用されます。<h:panelGrourp layout="block" rendered="#{}">
selectOneMenurendered<h:panelGroup>

于 2012-11-28T05:29:47.963 に答える