3

私はjsfプライムフェイスを使用しています。特定の outputext の値に応じて画像を表示したい。テキスト値が「Alarm *」の場合、特定の画像とともに div が表示されます。値が「Alarm **」の場合、他の画像を含む div が表示されます。以下のコードを試しましたが、うまくいきません。

<h:outputText id="alarmCriticalityValue" value="#{msg[summary.criticality.key]}" />

<c:if test="#{alarmCriticalityValue=='Alarm *'}">
   <div class="alarm1"></div>
</c:if>

このアイデアをどのように実装すればよいですか?

4

3 に答える 3

4

インスタンスを EL スコープbindingに入れるには、属性を使用する必要があります。UIComponent予想に反して、id属性はそれを行いません。

<h:outputText binding="#{alarmCriticality}" ... />

そして、UIOutput#getValue()そのvalue属性を取得するために使用する必要があります。

<c:if test="#{alarmCriticality.value == 'Alarm *'}">

renderedとはいえ、ここでは attributeを使用することをお勧めします。特に、または#{summary}のような JSF 反復コンポーネントの現在反復されている項目を表す場合はそうです。<ui:repeat><h:dataTable>

<h:panelGroup layout="block" styleClass="alarm1"
    rendered="#{alarmCriticality.value == 'Alarm *'}" />

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


具体的な問題とは無関係。条件付きレンダリングがローカライズされたテキストに依存するのは奇妙です。ロケールやローカライズされたテキストを変更するとどうなりますか? これは非常にもろいです。代わりにバンドルキーを確認することをお勧めします。

<h:outputText value="#{msg[summary.criticality.key]}" />
<h:panelGroup layout="block" styleClass="alarm1" 
    rendered="#{summary.criticality.key == 'some.alarm.key'}" />

このようにして、出力テキストをバインドする必要もなくなります。

于 2015-04-21T07:44:07.737 に答える
1

これを試して

<h:outputText id="alarmCriticalityValue" value="#{msg[summary.criticality.key]}" />
    <h:panelGroup layout="block" styleClass="alarm1" rendered="#{alarmCriticality.value eq 'Alarm *'}" />
于 2015-04-21T09:16:06.177 に答える
1

試す

<c:if test="#{msg[summary.criticality.key].equals('Alarm *')}">

または、 に a を追加しbindingて、h:outputTextそれに対してチェックします。

于 2015-04-21T07:45:09.837 に答える