web-dev-qa-db-ja.com

Java Servlets-値のリストをweb.xmlに保存する(単一のparam-nameには複数のparam-valueがあります)

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

Context-paramまたはinit-paramとして、この情報をサーブレットのweb.xmlファイルに保存することを望んでいました(したがって、独自のパーサーを記述する必要はありません)。基本的に、単一のparam-nameに対する複数のparam-value。

私が望むものの例:

<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には単一のparam-valueしか指定できません(context-paramまたはinit-param内)。

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

30
greenlaw

サーブレット仕様では、コンテキストパラメータに指定できる値は1つだけです。そのため、区切りリストのみを使用することになります。

<context-param>
  <param-name>validHosts</param-name>
  <param-value>example1.com,example2.com,.....</param-value>
</context-param>
39
Ramesh PVK

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

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/spring-beans.xml
        /WEB-INF/security-config.xml    
    </param-value>
</context-param>
19
stephen.hanson

はい、デリミタのみを使用します(他のオプションは利用できません):

<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
13
Eugene Retunsky