1

我正在使用 JSF 2.2,并且我想通过使用变量的属性在通过传递title生成的每个option元素上显示一个属性。h:selectOneMenuf:selectItems

似乎我无法访问该f:selectItems变量来自定义我的直通属性

这是我到目前为止所做的

我要显示的实体

public class ItemBean {
    private int id;
    private String strName;
    private String strDescription;

    public ItemBean(int id, String strName, String strDescription) {
        this.id = id;
        this.strName = strName;
        this.strDescription = strDescription;
    }

    // Getters and Setters
}

我的 backbean 方法来检索实体列表

public List<ItemBean> getItems() {
    return new ArrayList<ItemBean>(){
        {
            add(new ItemBean(1, "Java", "Java programming language"));
            add(new ItemBean(2, "PHP", "Yet another language"));
            add(new ItemBean(3, "Python", "Not a snake at all"));
        }
    };
}

h:selectOneMenu在视图中

<h:selectOneMenu>
    <f:selectItems value="#{bean.items}" var="item"
                           itemValue="#{item.id}"
                           itemLabel="#{item.strName}"
                           p:title="Description : #{item.strDescription}"/>
</h:selectOneMenu>

问题是我无法访问item变量p:title,那里的输出只是空的。

这是生成的代码

<select>
    <option title="Description : " value="1">Java</option>
    <option title="Description : " value="2">PHP</option>
    <option title="Description : " value="3">Python</option>
</select>

有可能这样做还是有其他方法?

4

1 回答 1

1

jstl c:forEach我终于找到了使用循环解决我的问题的方法,并f:selectItem从这篇文章Using f:selectItems var in passtrough attribute

这是代码:

<h:selectOneMenu>
    <c:forEach items="#{bean.items}" var="item">
        <f:selectItem itemValue="#{item.id}"
                      itemLabel="#{item.strName}"
                      p:title="Description : #{item.strDescription}"/>
    </c:forEach>
</h:selectOneMenu>
于 2016-05-28T15:48:20.667 回答