在我的使用中,我有一个(Primefaces) selectOneRadio。这是在ui:repeat中。selectOneRadio的值显示良好。我希望每个selectOneRadio都有一个有用的默认值,这取决于迭代的实体。这也可以正常工作,选择默认值。但是使用我的方法,我无法设置selectOneRadio的值,因为会出现一个异常:
javax.el.PropertyNotWritableException: [...] value="#{orderBean.getProductPriceId(product)}": Illegal Syntax for Set Operation
如何在ui:repeat中设置selectiOneRadioButton-value取决于迭代实体?
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>
这确实没有意义。您需要确保模型与视图匹配,而不需要任何额外的业务逻辑。
只使用
<p:selectOneRadio value="#{product.priceId}">
并将默认项的值为null
而不是""
,以使其匹配