0

その場でテキストボックスを作成したいですか?
実行するレポートを選択:

<h:selectOneMenu value="#{reportBean.selectReport}">
    <f:selectItems value = "#{reportBean.allReports}" />
    <f:ajax listener="#{reportBean.getReqID}" render="reqID"> </f:ajax>
</h:selectOneMenu>
4

1 に答える 1

2

<h:inputText>で選択した値に基づいてを表示/非表示にしたいようです<h:selectOneMenu>。はい、これはプレーンな JSF で簡単に実現できます。

set the renderedattribute as falsecomponent を使用する場合、コンポーネントはコンポーネント ツリーに表示されないため、任意の呼び出し (ajax 呼び出しでさえも) で参照できないことはありません。更新するには、コンポーネントを別のコンポーネント内にラップし<h:panelGroup>、ラッパーをレンダリングする必要があります。基本的な例:

<h:form id="frmRep">
    <h:selectOneMenu value="#{reportBean.selectReport}">
        <f:selectItems value = "#{reportBean.allReports}" />
        <!--
          assuming your reportBean.getReqID method will change the value of
          reportBean.showReqID attribute to render/not render it and works well
        -->
        <f:ajax listener="#{reportBean.getReqID}" render="pnlRepName" />
    </h:selectOneMenu>
    <h:panelGroup id="pnlRepName">
        <h:inputText id="reqID" rendered="#{reportBean.showReqID}"
            value="#{reportBean.reportName}" />
    <h:panelGroup>
</h:form>

代わりに、この特定の要件については、コンポーネントをユーザーに表示する必要があるかどうかを確認するためにのみサーバーにアクセスする必要があるため、ajax 呼び出しを使用することはお勧めしません。クライアント側だけでこれを処理するには、JavaScript ソリューションを選択します。

于 2013-04-05T21:46:40.547 に答える