如果我从第一页导航到第二页,当我单击第一个页面的提交按钮时,控制转到与第一页相对应写入的托管 bean,我想从数据库中获取一些结果并将它们显示到第二页,如果我设置在第一个 Managed Bean 的 action 方法中,将数据库值放入第二页对应的 Managed bean,然后我就可以在第二页上获取这些值。
请建议我的方法是否正确?
如果我从第一页导航到第二页,当我单击第一个页面的提交按钮时,控制转到与第一页相对应写入的托管 bean,我想从数据库中获取一些结果并将它们显示到第二页,如果我设置在第一个 Managed Bean 的 action 方法中,将数据库值放入第二页对应的 Managed bean,然后我就可以在第二页上获取这些值。
请建议我的方法是否正确?
您可以通过这种方式将名为 Bean1 的 bean 注入 Bean2
@ManagedBean
@RequestScoped
public Bean2 {
@ManagedProperty(value="#{bean1}")//this is EL name of your bean
private Bean1 injectedBean;
public void setBean1(Bean1 value) {
injectedBean = value; //provide setter for it
}
@PostConstruct
private void init() {
List<YourData> list = injectedBean.getDBData(); //now you can fetch your list
}
请注意,您必须为注入提供 setter,并且注入 bean 的范围应始终与您的 bean 范围相同或更高(在这种情况下,Bean1 必须至少为 RequestScope)
PS 另外,您可以拥有某种 DAO bean,它可以为您执行所有数据库数据库操作(它可以是 EJB bean 甚至 JSF Managed Bean),然后将其注入需要与您的数据库合作的每个 ManagedBean。