2012-10-14 80 views
0

在JSF 2.1应用程序中,我需要构建一个JSF dataTable(使用PrimeFaces),该JSF仅显示属于登录用户的db记录。如何将参数传递给JSF dataTable的值属性

所以,我需要的用户名传递给相关的DataTable的value属性豆:

value="#{tableBuilder.records}" 

下面是表豆:

@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

因此,在您的web应用程序中,登录用户可能会在视图的初始请求和成功回发到同一视图之间进行更改? – BalusC

+0

正确。第一个用户可能会登录,然后注销,然后另一个用户使用同一个网页登录。 – perissf

回答

1

如果环境支持EL 2.2(你的问题的历史印证的Java EE 6),然后在 “只管去做”:

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

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

无论是正确的方式或有更好的方法,我会离开中间。请记住,当EL评估值表达式时,会多次调用getter。

+0

感谢您的回答。但是,我应该在哪里以及如何为网页中的'user'赋予价值? – perissf

+0

正如我的回答? '#{user}'表示当前登录的用户。 – BalusC

+0

@BalusC那么,在这种特殊情况下,在getter中填充列表是可以的吗? – alexander

相关问题