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>

你很接近,你只需要引用字符串值并将整个放入#{...}.

请注意,在提交时指定文字<h:selectManyCheckbox value>会失败,但这是一个不同的问题。PropertyNotWritableException

于 2015-03-05T16:44:40.890 回答