如果通过@Factory方法呈现,则无法查看Object的详细信息

时间:2010-10-15 10:25:32

标签: seam

我的实体查询类中有以下代码,用于显示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注释的行,则未定义上面定义的参数,并且我能够查看用户详细信息。

1 个答案:

答案 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>