構成情報をロードする必要があるサーブレットを作成しています。必要な構成情報の一部は、文字列のリスト(具体的には、ホスト名や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を使用したい場合、それが本当に唯一のオプションですか?泣き言をやめて、独自の設定ファイルパーサーを記述する必要がありますか?
サーブレット仕様では、コンテキストパラメータに指定できる値は1つだけです。そのため、区切りリストのみを使用することになります。
<context-param>
<param-name>validHosts</param-name>
<param-value>example1.com,example2.com,.....</param-value>
</context-param>
各パラメーターを独自の行に配置します。私は最近次のことをしましたが、うまくいきます:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring-beans.xml
/WEB-INF/security-config.xml
</param-value>
</context-param>
はい、デリミタのみを使用します(他のオプションは利用できません):
<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