在JSF 2.1应用程序中,我需要构建一个JSF dataTable
(使用PrimeFaces),它只显示属于登录用户的db记录。
所以,我需要将用户名传递给与dataTable的value
属性关联的bean:
value="#{tableBuilder.records}"
这是表bean:
@ManagedBean
@ViewScoped
public class TableBuilder {
private List<MyRecord> records;
private String username;
// getters and setters
}
知道应用程序包含一个网页,通过LoginBean
实现容器管理的身份验证,一个SessionScoped ManagedBean,这很有用。这意味着在用户登录时通知TableBuilder的额外工作。
我想到的唯一方法是将LoginBean
注入TableBuilder
到@ManagedProperty
注释,并检查getRecords
的每个请求是否有用户名属性LoginBean已更改。
也许有更好的方法?
答案 0 :(得分:1)
如果您的环境支持EL 2.2(您的问题历史记录确认Java EE 6),那么“就这样做”:
<h:dataTable value="#{bean.getModel(user)}">
与
public List<Item> getModel(User user) {
// ...
}
无论是正确的方式还是有更好的方式,我都会留在中间。请记住,EL会在计算值表达式时多次调用getter。