35

構成情報をロードする必要があるサーブレットを作成しています。必要な構成情報の一部は、文字列のリスト (具体的には、ホスト名や URL のリスト) です。

この情報をサーブレットの web.xml ファイルに格納することを望んでいました (そのため、独自のパーサーを作成する必要はありません)。context-param または init-param; 単一のパラメーター名に対して本質的に複数のパラメーター値。

私が欲しいものの例:

<context-param>
    <param-name>validHosts</param-name>
    <param-value>example1.com</param-value>
    <param-value>example2.com</param-value>
    <param-value>example3.com</param-value>
</context-param>

私の最初の調査では、これは不可能であることが示されているようです。つまり、任意の param-name (context-param または init-param 内) に対して 1 つの param-value しか存在できないということです。

単一の param-value 内で区切られたリストを使用できることはわかっていますが、それでも web.xml を使用したい場合、それが本当に唯一のオプションですか? 泣き言を言うのをやめて、独自の構成ファイルパーサーを作成する必要がありますか?

4

5 に答える 5

45

サーブレットの仕様によると、任意のコンテキスト パラメータに対して値を 1 つだけ持つことができます。したがって、区切りリストのみを使用することになります。

<context-param>
  <param-name>validHosts</param-name>
  <param-value>example1.com,example2.com,.....</param-value>
</context-param>
于 2012-04-11T18:30:12.887 に答える
21

各パラメータを独自の行に配置します。私は最近次のことをしました、そしてそれはうまくいきます:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/spring-beans.xml
        /WEB-INF/security-config.xml    
    </param-value>
</context-param>
于 2012-04-11T18:41:21.893 に答える
13

はい、区切り文字を使用してください(これに使用できる他のオプションはありません)。

<context-param>
    <param-name>validHosts</param-name>
    <param-value>example1.com,example2.com,example3.com</param-value>
</context-param>



then simply
String[] validHosts = param.split(","); // not really much to do
于 2012-04-11T18:17:05.743 に答える