获取新的控制器或托管Bean实例

时间:2017-05-21 01:47:11

标签: java spring jsf primefaces jsf-2

这里出现的问题是我正在考虑特定情况的解决方案。

技术堆栈:Primefaces,JSF和Spring Framework。

我的申请

我的Web应用程序在Primefaces的DataTable中显示报告的结果。该报告必须在浏览器的新选项卡中打开。可数据表使用数据表头中的过滤器。我只有一个XHTML视图,其中显示了报告。

我的设计

@ViewScope
@Controller
public class MBReport implements Serializable {

private transient LazyDataModel<String[]> lazyData;

public void report1(){
    lazyData = new...
}
public void report2(){
    lazyData = new...
}
public void report3(){
    lazyData = new...
}

//setters and getters

}

我的问题

当我显示第一份报告时没有问题。当我显示第二个报告时没有问题。但是,当我尝试使用第一个报告的过滤器时,应用程序崩溃,因为它丢失了引用指针,并且它已被第二个报告替换。 我有这个想法,如果我用每个请求创建一个不同的Controller实例对象,问题将解决,但我不能这样做。我尝试使用faces范围(viewscope,flowcope,resquestscope)和Spring bean范围(请求,会话和应用程序)。

快速解决方案是制作各种View文件和lazyData字段。但是我不喜欢这么多。

你能帮我解决一下我的问题吗?

0 个答案:

没有答案