1

我在 web.xml 中有一个上下文参数:

<context-param>
        <description>Version number will be prefixed to url of requests</description>
        <param-name>version_id</param-name>
        <param-value>11</param-value>
</context-param>

我想将它注入到一个 ManagedBean 这个 bean 有一个范围无

我尝试了下面的代码,但它不起作用,我在启动时遇到异常并出现此错误:

表达式 #{initParam[version_id]} 引用的对象的范围,应用程序,比引用的托管 bean (responseData) 范围短

@ManagedBean
@NoneScoped
public class ResponseData implements Serializable {


    @ManagedProperty(value = "#{initParam.version_id}")
    private String version;


    public ResponseData() {
    }

    /**
     * @param version the version to set
     */
    public void setVersion(String version) {
        this.version = version;
    }

}

将上下文参数的值作为托管属性注入托管 bean 的正确方法是什么?

4

1 回答 1

1

您正在尝试的是,您正在尝试获取具有比 NoneScoped 的 ResponseData 托管 bean 更小的范围的托管属性的值。

但是,您应该能够从中获取上下文参数,ServletContext而无需引用另一个 bean。

ServletContext servletContext = (ServletContext) FacesContext
   .getCurrentInstance().getExternalContext().getContext();
servletContext.getInitParameter("version_id");
于 2012-12-26T15:55:51.830 回答