代码之家  ›  专栏  ›  技术社区  ›  mcrisc

JSF-会话范围的bean由不同计算机上的浏览器共享

  •  3
  • mcrisc  · 技术社区  · 15 年前

    我们有一个搜索表单,其中过滤器绑定到托管bean(会话范围)上的属性。它不是组件绑定,它的属性绑定类似 <h:inputText value="#{searchBean.filter}"/> .

    来自不同机器(然后是不同会话)的提交数据混合在一起。你搜索“约翰”,得到“玛丽”,只是因为你旁边的人刚刚搜索“玛丽”。你的价值 searchBean.filter 正在获得 他的 提交数据而不是您的。

    我已经在网上搜索了很多东西,没有找到解决办法,只是 same problem .

    有人已经面对过这个问题吗?有什么线索吗?

    谢谢!

    2 回复  |  直到 12 年前
        1
  •  10
  •   BalusC    15 年前

    这可能有两个原因:

    1. bean实际上在应用程序范围内。
    2. 有关财产已申报 static .

    要修复1),只需确保它在会话范围内。
    要修复2),只需删除非法修饰符。

        2
  •  3
  •   mcrisc    15 年前

    解决了的! 最后。谢谢你们的关注!

    这就像巴勒斯第一次猜到的。这是一个 static 藏在黑暗的角落里。我真的做了两次,三次检查所有的东西,寻找静态数据,但是——不要问我为什么——有人创建了第二个bean( Foo )它为 SearchBean .

    在JSP中,有一个 action="#{foo.search}" 而不是 searchBean.search . 等级 具有与中同名的方法 探查菜豆 那只不过是 searchBean.search(); .

    我认为昨天修复这个bug的压力不允许我在JSP中看到这个陷阱。