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:message key="<tiles:getAsString name="screenId"/>" />

対策 
bean:defineを使って一旦変数にとり、その後EL式を使って取得するようにしました。

<bean:define id="screenId"><tiles:getAsString name="screenId"/></bean:define>
<bean:message key="${screenId}" />
これで何とかリソースファイルから値を取得することが出来ました。

欠点 

この方法だとtiles.xmlでscreenIdがputタグで定義されていない場合、bean:defineにnullを設定しようとするため、エラーとなってしまいます。。。orz..

欠点を克服できる方法がありましたら、教えていただけるとありがたいです。

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS

0 Response to "tiles:getAsString で取得した値をbean:message のkey属性に値を設定する"

コメントを投稿