1

web.xml に context-param があります。

<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 にはスコープがあります None

以下のコードを試しましたが、うまくいきません。起動時に次のエラーで例外が発生します。

式 #{initParam[version_id]} によって参照されるオブジェクトのスコープ application は、参照する管理対象 Bean (responseData) スコープの none よりも短くなっています

@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;
    }

}

context-param の値をマネージド 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 に答える