在另一个ManagedBean的方法中设置ManagedBean值

时间:2012-05-17 06:59:06

标签: jsf-2

如果我从第一页导航到第二页,当我点击Page one的提交按钮时,控制转到与第一页相对应的托管bean,我想从数据库中获取一些结果并将它们显示到第二页,如果我在第一个Managed Bean的action方法中将Database值设置为对应于第2页的Managed bean,那么我是否能够在第2页上获得这些值。

请告知我的方法是否正确?

1 个答案:

答案 0 :(得分:0)

你可以通过这种方式将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)

P.S。你也可以使用某种DAO bean来为你做所有的数据库数据库操作(它可以是EJB bean,甚至是JSF Managed Bean),然后将它注入每个需要与你的数据库合作的ManagedBean。