我们有一个搜索表单,其中过滤器绑定到托管bean(会话范围)上的属性。它不是组件绑定,其属性绑定如<h:inputText value="#{searchBean.filter}"/>
。
来自不同机器(不同会话)的提交数据正在变得混杂。你搜索“john”,得到“mary”只是因为你身边的那个人刚刚搜索过“mary”。您searchBean.filter
的价值是他的提交的数据而非您的数据。
我已经搜索了很多内容并且找不到任何解决方案,只是same problem的发生。
有没有人遇到过这个问题?有线索吗?
谢谢!
答案 0 :(得分:10)
这可能有两个原因:
static
。要修复1),只需确保它在会话范围内 要修复2),只需删除非法修饰符。
答案 1 :(得分:3)
解决了!最后。谢谢你们,请你注意!
就像Balus第一次猜到的那样。这是隐藏在黑暗角落里的static
。我真的加倍,三重检查所有寻找静态的东西,但是 - 不要问我为什么 - 有人创建了第二个bean(Foo
),它持有SearchBean
的静态引用。
在JSP中,有一个action="#{foo.search}"
而不是searchBean.search
。类Foo
的方法名称与SearchBean
中的名称相同,只有searchBean.search();
。
我认为昨天修复这个bug的压力不允许我在JSP中看到这个陷阱。