【问题标题】:How to make a shared/utility backing bean?如何制作共享/实用程序支持 bean?
【发布时间】:2011-12-20 08:55:15
【问题描述】:

我有几个页面共享页面的特定部分,例如一组复选框,显示所有能够在这些用户中搜索的用户,所以我正在考虑将 UI 部分分组到一个 facelet 中,这样我就可以包括它在其他页面中,对于服务器端部分,我正在考虑制作一个包含该页面的方法和属性的 sessionScoped bean,您如何看待这种方法?请指教,谢谢。

更新:有一个重要的问题,我是否应该使该 bean 中的方法同步,以便它为不同的请求返回不同的值,我的意思是不为不同的请求返回相同的结果?

【问题讨论】:

    标签: java jsf jakarta-ee jsf-2 backing-beans


    【解决方案1】:

    是的,听起来不错,只要不太重,您可以将这些东西放在会话范围内

    【讨论】:

    • 如果太重,应该是应用范围还是什么?我的想法是制作一个包含 UI 之间常用方法的实用程序 bean。
    • 不,如果数据太重,你应该把它们放在请求中,但我不认为复选框(绑定数据)很重
    • 不要将会话或应用程序范围用于此类事情。使用请求范围和缓存系统,如 EHCache。它与沉重无关。这只是糟糕的设计。
    • 在任何情况下都不应该在应用范围内,因为你必须根据 request -> session 进行区分,还需要维护生命周期,
    • @peprerg 如果我们需要从每个页面获取用户输入,这将有何帮助。
    【解决方案2】:

    使用请求范围的 bean 而不是会话范围的。对此类事情使用延迟加载模式。在其他bean中分离公共资源是一个很好的解决方案

    class CommonsBean {
        private List<User> users;
    
        public List<User> getUsers() {
          if (users == null) {
              users = // here some code to load it from DB
          }
          return users;
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-22
      • 1970-01-01
      • 2010-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多