使用Jsf 2和CDI的Datalist模式

时间:2013-05-21 22:54:13

标签: tomcat jsf-2 cdi

我有一个像......这样的课程。

@RequestScoped
public class UserList
...
public List<User> getUserList(){
  return getEntityManager().createQuery(getCriteria()).getResultList();
  //getCriteria() hard query need userType parameter to be populated
}
}

所有页面都可以调用此类,但每个页面都使用不同的参数,例如“userType = A”。这些参数的值保留在每个页面的每个Managed Bean(Conversation Scoped)上。

如何或何时填充DataList参数? dataList有一个模式,带有jsf2和CDI?

2 个答案:

答案 0 :(得分:0)

JSF不提供开箱即用的数据列表组件。但是,您可以创建自己的(查看<ui:repeat/>)或使用其中一个组件库 - Tomahawk,PrimeFaces,RichFaces,仅举几例。

至于参数 - 只需将会话范围的bean注入请求范围的bean并读取它。

答案 1 :(得分:0)

你在get方法中这样做的方式非常糟糕。你会注意到这个方法被多次调用,并且会减慢页面渲染速度。你应该做的是用@PostConstruct方法获取数据并将其设置在成员变量上,然后在你的get方法中只返回该变量。