我的实体查询类中有以下代码,用于显示List对象。当我使用@Factory方法名称(“users”)迭代rich:dataTable中的所有成员时,对象确实正确显示。但是,当我点击特定用户进入详细信息页面时,以下内容被添加为页面参数(e.g. &dataModelSelection=_user:users[0])
,导致页面不显示详细信息,但如果我删除此查询参数,它似乎工作正常。这可能会出现什么问题?
@Name("userList")
public class UserList extends EntityQuery<User> {
@DataModel(scope = ScopeType.PAGE)
private List<User> users;
@Factory("users")
public List<User> getUsersByOrg() {
}
注意:如果我注释掉包含@DataModel注释的行,则未定义上面定义的参数,并且我能够查看用户详细信息。
答案 0 :(得分:1)
@DataModel注释允许Seam包装一些java.util。*集合,例如List,Set等...... JSF UIData组件(例如:rich:dataTable)需要一个特殊的集合包装,其基类为{{ 3}}。 支持用户进行的行选择它解释了您看到的原因
dataModelSelection=_user:users[0]
因此,如果要捕获所选用户,则应使用@DataModelSelection
@DataModelSelection
@Out(required=false)
private User selectedUser;
您可以使用h:commandLink抛出支持的操作
<rich:datTable value="#{users}" var="_user">
<h:column>
<f:facet name="header">Action</f:facet>
<h:commandLink action="#{userHome.view}" value="View"/>
</h:column>
</richTable>