如何将参数传递给JSF dataTable的value属性

时间:2012-10-14 17:03:17

标签: jsf java-ee primefaces facelets

在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已更改。

也许有更好的方法?

1 个答案:

答案 0 :(得分:1)

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

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

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

无论是正确的方式还是有更好的方式,我都会留在中间。请记住,EL会在计算值表达式时多次调用getter。