tiles:getAsString で取得した値をbean:message のkey属性に値を設定する
tiles.xmlでputタグに設定したvalueの値を、JSP側のbean:messageタグのkey属性に設定しようとしたらはまったので、メモします。
前提
tiles.xml
↓の用に定義しています。
<definition name="baseLayout" path="/WEB-INF/jsp/shared/baseLayout.jsp">
<put name="screenId" value="A001"/>
</definition>
bean:messageで取得するリソースファイル
リソースファイルの内容を↓の用に設定して、struts-configにリソースファイルとして定義しておきます。
A001=A画面
baseLayout.jspでは、tiles.xmlで指定したscreenIdを取得し、リソースファイルに設定した"A画面"という文字をbean:messageタグを使って取得しようとしたとします。
問題
問題
↓の様に書いてもだめでした。。。まぁ当然ですよね。
対策
bean:defineを使って一旦変数にとり、その後EL式を使って取得するようにしました。<bean:message key="<tiles:getAsString name="screenId"/>" />
対策
<bean:define id="screenId"><tiles:getAsString name="screenId"/></bean:define>これで何とかリソースファイルから値を取得することが出来ました。
<bean:message key="${screenId}" />
この方法だとtiles.xmlでscreenIdがputタグで定義されていない場合、bean:defineにnullを設定しようとするため、エラーとなってしまいます。。。orz..
欠点を克服できる方法がありましたら、教えていただけるとありがたいです。
0 Response to "tiles:getAsString で取得した値をbean:message のkey属性に値を設定する"
コメントを投稿