Primefaces 按名称访问bean属性

Primefaces 按名称访问bean属性,primefaces,jsf-2.2,Primefaces,Jsf 2.2,我正在尝试开发一个从列表中输出文本的组合。要显示的列表和项目属性必须设置为参数。所以我创建了这个组合(为了简化,我只保留了必要的内容): 呈现视图时似乎没有考虑“var”属性,因为它试图从PersistentSet而不是“roles”集中获取属性 有什么想法吗 提前感谢。好的,找到问题了。我将在这里添加我的答案,以帮助其他人解决同样的问题 在JSF中,我不能在集合上迭代,它必须是列表类型。所以我从Set改为List,现在开始工作了 谢谢你们的帮助 没有复合材料它能工作吗?它是否适用于ui:rep

我正在尝试开发一个从列表中输出文本的组合。要显示的列表和项目属性必须设置为参数。所以我创建了这个组合(为了简化,我只保留了必要的内容):

呈现视图时似乎没有考虑“var”属性,因为它试图从PersistentSet而不是“roles”集中获取属性

有什么想法吗


提前感谢。

好的,找到问题了。我将在这里添加我的答案,以帮助其他人解决同样的问题

在JSF中,我不能在集合上迭代,它必须是列表类型。所以我从Set改为List,现在开始工作了


谢谢你们的帮助

没有复合材料它能工作吗?它是否适用于
ui:repeat
?将错误文本放在google?Hello@Kukeltje,它在composite之外也不起作用。奇怪的是,访问bean属性的代码在f:selectItems:@DavidFlorez中工作,这是一个EL声明,是的,理论上我可以通过这种方式访问任何属性。不可能使用来自XHTML的反射。看一看:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:c="http://java.sun.com/jsp/jstl/core"
    xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.org/ui" xmlns:o="http://omnifaces.org/ui"
    xmlns:composite="http://xmlns.jcp.org/jsf/composite" xmlns:bt="http://xmlns.jcp.org/jsf/composite/tags/bt">
<composite:interface>

    <composite:attribute name="id" />
    <composite:attribute name="list" shortDescription="Output list (items itself)" />
    <composite:attribute name="listValue" shortDescription="Bean attribute to be displayed in the list" />

</composite:interface>
<composite:implementation>
    <h:panelGroup id="#{cc.attrs.id}" layout="block">
        <p:repeat var="item" value="#{cc.attrs.list}">
            <h:outputText value="#{item[cc.attrs.listValue]}" />
        </p:repeat>
    </h:panelGroup>
</composite:implementation>
</html>
<bt:selectToDataTable id="rolesSd" list="#{aclControlBean.componentSecurity.roles}" listValue="name" />
Caused by: javax.el.PropertyNotFoundException: The class 'org.hibernate.collection.internal.PersistentSet' does not have the property 'name'.
    at javax.el.BeanELResolver.getBeanProperty(BeanELResolver.java:568)
    at javax.el.BeanELResolver.getValue(BeanELResolver.java:229)
    at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
    at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
    at com.sun.el.parser.AstValue.getValue(AstValue.java:139)
    at com.sun.el.parser.AstValue.getValue(AstValue.java:203)
    at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:226)
    at org.jboss.weld.el.WeldValueExpression.getValue(WeldValueExpression.java:50)
    at org.jboss.weld.el.WeldValueExpression.getValue(WeldValueExpression.java:50)
    at com.sun.faces.facelets.el.ContextualCompositeValueExpression.getValue(ContextualCompositeValueExpression.java:158)
    at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
    ... 105 more