Как установить значение selectiOneRadioButton внутри пользовательского интерфейса:repeat в зависимости от повторяющейся сущности?

В моем случае у меня есть (Primefaces) selectOneRadio. Это в пользовательском интерфейсе: повторить. Значения selectOneRadio отображаются нормально. Я хочу, чтобы каждый selectOneRadio имел полезное значение по умолчанию, в зависимости от повторяющейся сущности. Это тоже нормально работает, по умолчанию выбрано. Но с моим подходом я не могу установить значение selectOneRadio, поскольку возрастает исключение:

javax.el.PropertyNotWritableException: [...] value="#{orderBean.getProductPriceId(product)}": Illegal Syntax for Set Operation

Как установить значение selectiOneRadioButton внутри пользовательского интерфейса: repeat в зависимости от повторяющейся сущности?

OrderBean:

public class OrderBean {
    private String productPriceId; // + getter and setter
    public String getProductPriceId(final Product product) {
        return product == null ? "" : product.getPricesAsList().get(0).getId().toString();
    }
}

XHTML:

<ui:repeat var="product" value="...">
        <p:selectOneRadio value="#{orderBean.getProductPriceId(product)}">
            ...
        </p:selectOneRadio>
</ui:repeat>

1 ответ

Решение

Это действительно бессмысленно. Вы должны убедиться, что модель соответствует представлению без какой-либо дополнительной бизнес-логики.

Просто используйте

<p:selectOneRadio value="#{product.priceId}">

и дать элементу по умолчанию значение null вместо "" так что это соответствует.

Другие вопросы по тегам