数据表显示具有关系的2个不同实体表

时间:2013-02-28 06:22:44

标签: jsf

我的数据表

<h:form>
    <h:panelGroup>
        <h:dataTable columnClasses="input-radio,input-label" id="account-table" value="#{accountController.items}" var="item" border="0">
            <h:column>
                <h:outputText value="#{item.id}"/>
            </h:column>
            <h:column>
                <h:outputText value="#{item.name}"/>
            </h:column> 
        </h:dataTable>
    </h:panelGroup>
</h:form>

我有一个与用户实体有关的帐户实体。无论如何从帐户检索用户数据而不是为帐户和用户创建2个数据表?

getItems方法

public DataModel getItems() {
    if (items == null) {
        items = getPagination().createPageDataModel();
    }
    return items;

}

使用JSF 2,使用CRUD自动生成管理bean

1 个答案:

答案 0 :(得分:1)

如果DataModel类可以访问user实体,则可以通过链接对象来遍历JSF页面中的关系:

  • #{item.name} - 访问项目名称
  • #{item.user.name} - 如果用户在项目
  • 中有getter,则访问用户名

E.g。你的DataModel

public class DataModel {

    private Long id;
    private String name;
    private User user;
    ...
}

JSF页面:

<h:form>
    <h:panelGroup>
        <h:dataTable columnClasses="input-radio,input-label" id="account-table" value="#{accountController.items}" var="item" border="0">
            <h:column>
                <h:outputText value="#{item.id}"/>
            </h:column>
            <h:column>
                <h:outputText value="#{item.user.name}"/> <!-- traverse to user entity here -->
            </h:column> 
        </h:dataTable>
    </h:panelGroup>
</h:form>