gpt4 book ai didi

JSF 2.1 - 获取 FacesContext 策略

转载 作者:行者123 更新时间:2023-12-04 05:14:33 25 4
gpt4 key购买 nike

我正在开发我的 MVC Controller 是 JSF 2.1 的 webapp。我有几种基于

FacesContext.getCurrentInstance()



我用这个来
  • 从 Flash 范围中放置/检索值
  • 在 View 中添加消息
  • 获取请求参数映射

  • 例子:
    public void addInfoMessage(String title, String description){
    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,title, description));
    }


    public void putFlashMessage(String code, String value){
    FacesContext.getCurrentInstance().getExternalContext().getFlash().put(code, value);
    }

    等等

    我只是想知道如果我在每个托管 bean 上都使用这个方法,那么在哪里放置这些方法的合适位置?我考虑两种选择:

    a)创建类“JSFUtils”,其中所有方法都是公共(public)的和静态的

    b) 创建没有声明范围和声明@ManagedBean 注释的父类(super class)“ManagedBean”,但使用这些公共(public)方法。每个托管 bean 都应该是这些类的子类,因此它将继承这些方法。

    最佳答案

    实用程序类是推荐的方法。您可以使用现有的 JSF 实用程序库,而不是重新发明自己的库,例如 OmniFaces其中有 Faces Messages 实用程序类。

    String foo = Faces.getRequestParameter("foo");
    Messages.create(summary).detail(detail).add();
    Messages.addGlobalInfo(summary); // Without detail.
    Faces.setFlashAttribute(key, value);

    您确实也可以将其抽象为“ super bean”,但这是不可重用的,并且您会在每个 JSF 项目中不断重复自己。此外,一个类只能从一个类扩展。因此,如果您的 bean 碰巧需要从另一个父类(super class)扩展,那么您就迷路了。

    关于JSF 2.1 - 获取 FacesContext 策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14456951/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com