1

例えば:

<h:selectManyCheckbox
    id="literalOptions"
    value="firstOption">
    <f:selectItems value="[firstOption, secondOption, thirdOption]"/>
</h:selectManyCheckbox>

これはうまくいきませんが、アイデアはわかりますか?

リテラル (文字列型) リスト オプション (必ずしもではないが、Bean プロパティから文字列として取得される可能性があります) を渡したいのですが、[a,b,c]リスト構文はおそらく正しくありませんが、どちらが正しいのでしょうか?

f:selectItemsまたは、別の方法として、カスタム コンポーネントで内部的に使用するこのリテラルを渡す、作成したカスタム コンポーネントにリスト リテラルを渡すにはどうすればよいでしょうか? つまり、コンポーネント ユーザーによるリスト値のアドホック定義のために、このようなリテラルを受け入れるカスタム コンポーネントを作成するにはどうすればよいでしょうか。

4

1 に答える 1

1

Java EE 6 を使用している場合は、JSTLfn:split()トリックを使用します。

<html ... xmlns:fn="http://java.sun.com/jsp/jstl/functions">
...
<h:selectManyCheckbox value="firstOption">
    <f:selectItems value="#{fn:split('firstOption,secondOption,thirdOption', ',')}"/>
</h:selectManyCheckbox>

Java EE 7 を使用している場合は、EL 3.0 コレクション リテラルを使用します。

<h:selectManyCheckbox value="firstOption">
    <f:selectItems value="#{['firstOption', 'secondOption', 'thirdOption']}"/>
</h:selectManyCheckbox>

文字列の値を引用符で囲み、全体を に入れるだけで済みました#{...}

in でリテラルを指定すると、 on submit で<h:selectManyCheckbox value>失敗することに注意してください。ただし、それは別の問題です。PropertyNotWritableException

于 2015-03-05T16:44:40.890 に答える