有一个托管 bean (DemoManagedBean.java),它在 (sample.xhtml)XHTML 页面上保存一些数据。
sample.xhtml 中有一个重定向链接,它打开同一页面(sample.xhtml)的一个新选项卡,但加载了不同的数据。
问题 - 因为只有一个 DemoManagedBean.java 实例,因此无法进一步处理任何内容,即;一个选项卡上的更改会影响所有其他选项卡。
有没有办法让每个选项卡都有多个实例来保存特定选项卡的数据?
谢谢,
迪内什
有一个托管 bean (DemoManagedBean.java),它在 (sample.xhtml)XHTML 页面上保存一些数据。
sample.xhtml 中有一个重定向链接,它打开同一页面(sample.xhtml)的一个新选项卡,但加载了不同的数据。
问题 - 因为只有一个 DemoManagedBean.java 实例,因此无法进一步处理任何内容,即;一个选项卡上的更改会影响所有其他选项卡。
有没有办法让每个选项卡都有多个实例来保存特定选项卡的数据?
谢谢,
迪内什
您可以通过设置正确的 bean scope来控制它。在您的特定情况下,您需要将 bean 放在请求范围或视图范围中,具体取决于您是否需要基于每个视图的状态。
使用标准的 JSF bean 管理 API,就是这样(不需要 XML!):
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean
@RequestScoped
public class DemoManagedBean {
// ...
}
未指定范围注释时@XxxScoped
,默认为@NoneScope
. 但是,您的描述与会话或应用程序范围相匹配。也许您在没有真正理解您实际在做什么的情况下明确设置了@SessionScoped
or注释。@ApplicationScoped
或者您可能出于某种原因使用 Spring 来管理 bean,@Controller
没有任何明确指定范围的 Spring 默认为应用程序范围。