3

例:ボタンをクリックしたときA。次のテキストが表示されます: you have choosed A.

しかし、ボタンを変更すると、同じテキストが表示されますが、値は#{bean.str}変更されます

これが私のコードです:

<p:selectOneButton id="selectId" value="#{bean.str}">
            <f:selectItem itemLabel="A" itemValue="1" />
            <f:selectItem itemLabel="B" itemValue="2" />
            <f:selectItem itemLabel="C" itemValue="3" />
            <f:ajax event="change" render="tabView" listener="#{bean.change}" />
</p:selectOneButton>

<c:if var="test" test="#{bean.str =='1'}">
        <h:outputText value="you have choosed A" />
</c:if>
<c:if test="#{beanApplication.perspective=='2'}">
        <h:outputText value="you have choosed B" />
</c:if>
<c:if test="#{beanApplication.perspective=='3'}">
        <h:outputText value="you have choosed C" />
</c:if>

<c:if>ボタンをクリックしたときにJSTL テストを更新する方法を探しています。

4

3 に答える 3

5

JSTL は、JSF ビューのレンダリング時ではなく、JSF ビューのビルド時に実行されます。ただし、この特定の例では、送信された値は、ビューのビルド時間後にBean プロパティとしてのみ設定されます。ビューのビルド時間は JSF RESTORE_VIEW フェーズ中に実行されますが、Bean プロパティは JSF UPDATE_MODEL_VALUES フェーズ中に設定されます。

代わりに、レンダリング時に条件を評価する必要があります。そのために提供された JSF コンポーネントのrendered属性を使用します。

<h:outputText value="you have chosen A" rendered="#{bean.str == '1'}" />
<h:outputText value="you have chosen B" rendered="#{bean.str == '2'}" />
<h:outputText value="you have chosen C" rendered="#{bean.str == '3'}" />

<p:ajax>さらに、ではなく、PrimeFaces コンポーネントで使用する必要があります<f:ajax>。また、 で参照されているコンポーネント (および同等の ) が上記の 3 つのコンポーネントをカバーしていることを確認する必要がtabViewあり<f:ajax render>ます<p:ajax update>。完全なキックオフの例を次に示します。

<p:selectOneButton id="selectId" value="#{bean.str}">
    <f:selectItem itemLabel="A" itemValue="1" />
    <f:selectItem itemLabel="B" itemValue="2" />
    <f:selectItem itemLabel="C" itemValue="3" />
    <p:ajax listener="#{bean.change}" update="tabView" />
</p:selectOneButton>

<h:panelGroup id="tabView">
    <h:outputText value="you have chosen A" rendered="#{bean.str == '1'}" />
    <h:outputText value="you have chosen B" rendered="#{bean.str == '2'}" />
    <h:outputText value="you have chosen C" rendered="#{bean.str == '3'}" />
</h:panelGroup>

以下も参照してください。

于 2012-11-12T14:21:28.593 に答える
1

すべての条件をパネルに配置し、ボタンのクリックで再レンダリングできます

于 2012-11-12T14:16:38.583 に答える
0

3つのoutputTextで「rendered」属性を使用します

于 2012-11-12T14:20:32.703 に答える