我認爲我需要使用<s: property>
裏面<s:text>
,但當然這是不可能的。我需要使用<s: property>裏面<s:text>
以下是情況:我有一個.jsp需要顯示不同數量的actionmessages。通常情況下,你會添加這些actionmessages您的Java類中是這樣的:
action.addActionMessage("this is a string");
action.addActionMessage("this is another string");
不過,我不喜歡我的硬編碼在Java類的內部消息,我想將它定義一個屬性文件中,這樣的:
Java:
action.addActionMessage("menu.message1");
action.addActionMessage("menu.message2");
Properties:
menu.message1 = this is a string
menu.message2 = this is another string
當然,Java的動作類不能進入屬性文件,只是一個Struts標籤可以。所以我的.jsp包含這個:
<s:if test="hasActionMessages()">
<s:iterator value="actionMessages">
<div class="loginErrorMessage">
<s:text name="<s:property>"/>
</div>
</s:iterator>
</s:if>
我使用這種迭代構造,所以我可以控制消息的佈局。 <s:property/>
應該返回actionmessage本身,我選擇它等於屬性文件中的條目的鍵。如果這種嵌套實際上會工作,我們會得到:
<s:text name="<s:property/>"/>
==> <s:text name="menu.message1"/>
==> this is a string
我可以使用OGNL來解決這個問題嗎?我嘗試了一些%{}和$ {}的東西,但我不知道值/ var的名稱以獲取valuestack消息的字符串?
Thx!
雖然我不再使用它,但我只是嘗試了你所建議的代碼,並沒有顯示任何內容。 (所以%{key}評估爲emptry字符串?) – user1884155
@ user1884155抱歉,錯字。糾正。 (忘了'#'爲一個局部變量)。 –