Невозможно получить доступ к переменной f:selectItems для атрибута passthrough

Я использую JSF 2.2 и хочу отобразить title атрибут на каждом option элемент, созданный h:selectOneMenu с проходом с помощью атрибута f: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
}

Мой метод бобов для получения списка сущностей

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>

Можно ли так сделать или есть другой способ?

1 ответ

Решение

Я наконец нашел решение своей проблемы с помощью jstlc:forEach петля и f:selectItem из этого поста Использование f:selectItems var в атрибуте passtrough

Вот код:

<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>
Другие вопросы по тегам