0

在 JSF 2.1 应用程序中,我需要构建一个dataTable仅显示属于登录用户的数据库记录的 JSF(使用 PrimeFaces)。

因此,我需要将用户名传递给与 dataTable 的value属性关联的 bean:

value="#{tableBuilder.records}"

这是表bean:

@ManagedBean
@ViewScoped
public class TableBuilder {
    private List<MyRecord> records;
    private String username;
    // getters and setters
}

知道应用程序由一个网页组成,并通过LoginBeanSessionScoped ManagedBean 实现容器管理的身份验证,这很有用。这意味着在用户登录时通知 TableBuilder 的额外工作。

我想到的唯一方法是将 注入LoginBeanTableBuilderthrough@ManagedProperty注释中,并检查getRecordsLoginBean 的用户名属性是否已更改的每个请求。

也许有更好的方法?

4

1 回答 1

1

如果您的环境支持 EL 2.2(您的问题历史确认 Java EE 6),那么“就这样做”:

<h:dataTable value="#{bean.getModel(user)}">

public List<Item> getModel(User user) {
    // ...
}

无论是正确的方式还是有更好的方式,我都会中途离开。请记住,调用 getter 的次数与 EL 计算值表达式的次数一样多。

于 2012-10-14T17:17:41.713 回答