这里出现的问题是我正在考虑特定情况的解决方案。
技术堆栈: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字段。但是我不喜欢这么多。
你能帮我解决一下我的问题吗?