@亚历克斯,
正如你刚才提到你有多个视图/要渲染/在多个请求维护和保持持续到用户会话不会过期的页面。 这只是因为bean作用域是会话,可能是你已经做了避免多个数据库调用来实现性能,只是避免从每个请求的数据库重新加载相同的信息。
我认为你在用户会话bean或任何其他会话bean中创建了一个你最好的集合(根据你的选择,但我会建议仅为此创建New Bean)。 在这个集合中,您只需将您想要在页面上显示的模型数据放在该上下文文件中,而不是注册该bean。坚持你需要的对象,如你有三页.P1,P2 & P3和P3之后,你想从会话中删除model1(你的pojo),然后在导航事件中删除model1。
//Sample code which help to understand what I am saying
@Session
UserBean {
Map tempBean<Obejct,String>=new HashMap<Object,String>();
//just for example suppose you want to load Model1
public Model1 viewP1() {
if(tempBean.get("P1info")==null){//key for P1 view
Model1 m1=db.getP1info();
tempBean.put("P1info",m1);
}
return (m1)tempBean.get("P1info");
}
}
要从届型号1数据只设置了一个空值的键“P1info”在上面的代码时,你可以使用WeakHashMap中,如果你不想从Map.But删除键确认删除事件触发器上的值部分,之后您不想在会话中保留Model1值。
我希望这会适用于您的情况。请让我知道在执行中的任何问题,因为我没有共享工作代码,但只显示概念。
我们现在正在做什么。与anil的建议类似,我们有一个会话Bean,它包含这些小型表单特定对象的字段和访问方法(在JSP中像'#{containerBean.formBean}'中一样访问)。但是这种方法需要特殊的手动编程来解决并发问题。另外我的IDE(Eclipse)经常挂在这个容器bean上的代码导航(因为成员数量已经很大)。 – Alex