9

私はJSFでこのコードを使用しています。:

<c:if test="#{sV.done.booleanValue()}">
     <option value="#{sV.id}" selected="selected">#{sV.text}</option>
</c:if>
<c:if test="#{not sV.done.booleanValue()}">
     <option value="#{sV.id}">#{sV.text}</option>
</c:if>

svはデータ(pojo)を含む私のクラスであり、doneは変数です。がの場合、属性を持つタグBooleanを表示したいと思います。しかし、私はそれを作ることができませんでした。私がどこが間違っているのかわからない。optionselectedsV.donetrue

そうでなければ、同じページの私の場合、しばらく前に機能していなかっcたので、何か問題がある可能性がありますか?c:forEachそれが理由かもしれませんか?私はどこが間違っていますか?

を選択せず​​にオプションタグを表示するたびattribute

4

4 に答える 4

7

これを試して: -

<c:if test="${sV.done == true}">...</c:if>  // or
<c:if test="${sV.done eq true}">...</c:if>  // or
<c:if test="${sV.done}">...</c:if>   // or

そして否定の場合(sV.doneがfalseの場合):-

<c:if test="${! sV.done}">...</c:if>    /// OR
<c:if test="${not sV.done}">...</c:if>  /// OR
<c:if test = "${sV.done != true}">...</c:if>     // OR
<c:if test = "${sV.done ne true}">...</c:if>  // OR

if with演算子の詳細については、次のリンクを確認してください。- JSTL if

于 2012-10-06T09:35:51.473 に答える
5

EL 2.2を使用している場合は、構文に問題はありません。では、JSTL<c:xxx>タグはどれも解釈されませんか?JSTLコアtaglibをインポートする必要があります。使用しているビューテクノロジとJSTLバージョンが不明なため、JSPとFaceletsの両方のインポート例を次に示します。

JSTL 1.0を使用したJSP:

<%@taglib prefix="c" uri="http://java.sun.com/jstl/core" %>

JSTL 1.1 / 1.2を使用したJSP:

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

JSTL 1.1 /1.2を使用したFacelets1.x:

<html ... xmlns:c="http://java.sun.com/jstl/core">

JSTL1.2を使用したFacelets2.x:

<html ... xmlns:c="http://java.sun.com/jsp/jstl/core">

参照:


具体的な問題とは関係なく、自分UISelectOneで要素をいじる代わりにJSFコンポーネントを使用することを検討しましたか?あなたは私たちのウィキページ<option>でいくつかの具体的な例を見つけることができます。h:selectOneMenu

于 2012-10-06T11:38:05.990 に答える
3

JSFとJSTLはどちらも、「ボックス化された」オブジェクト(ブール値、整数など)に直接アクセスします。ボックス化を解除する必要はありません。したがって、booleanValue()を呼び出す必要はありません。

<c:if test="${sV.done}">...</c:if>

しかし実際には、あなたのアプローチ全体がより良いかもしれません-私はオプションと値のリストなしでページにオプションをレンダリングしません。ループと選択テストを毎回手動で書き出すわけではありません。タグがあるか、これを行うためのメソッドを書くことができます。

スーパーヒント: Pair(文字列名、オブジェクト値)とライブラリメソッドHtmlUI.renderSelectOptions()というクラスがあり、これらのリストと「現在の」値からSELECTオプションを出力します。

コンボボックスの選択は、ブール値の表現としても実際には最適ではない可能性がありますか?チェックボックスを使用することもできます。ただし、これはUIデザイン次第です。

この方法を使用したい場合は、タグ内のSELECTED属性のみを切り替えることができます。キーと値全体のコードを複製するよりも簡単です。レガシーコードの場合、この正確な要件も満たす関数があります:)

お役に立てれば!私に投票してください。

于 2012-10-06T10:41:23.280 に答える
-2

質問で述べたように、他のコンポーネント/ライブラリがc:ifの動作に干渉しているように見えますが、どのような場合でも動作しませんでした。上記のすべての提案を試しました。返信ありがとうございます。

于 2013-01-07T07:02:44.047 に答える