jsf多个实例托管bean用于多个选项卡

时间:2013-06-21 04:54:48

标签: jsf tabs managed-bean multiple-instances

有一个托管bean(DemoManagedBean.java),它在(sample.xhtml)XHTML页面上保存了一些数据。

sample.xhtml中有一个重定向链接,它打开同一页面的新选项卡(sample.xhtml),但加载了不同的数据。

问题 - 因为只有一个DemoManagedBean.java实例,因此无法进一步处理,即;一个选项卡上的更改会影响所有其他选项卡。

有没有办法让每个标签都有多个实例来保存特定标签的数据?

谢谢,

的Dinesh

1 个答案:

答案 0 :(得分:0)

您可以通过设置正确的bean 范围来控制它。在您的特定情况下,您需要将bean放在请求范围或视图范围内,具体取决于您是否需要基于每个视图的状态。

使用标准的JSF bean管理API,就是这样(不需要XML!):

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean
@RequestScoped
public class DemoManagedBean {
    // ...
}

如果未指定@XxxScoped范围注释,则默认为@NoneScope。但是,您的描述符合会话或应用程序范围。也许你明确地设置了@SessionScoped@ApplicationScoped注释,而没有真正理解你实际在做什么。或许你出于某种原因使用Spring来管理bean,Spring @Controller没有指定任何明确的范围默认为应用程序范围。

另见: