[英]Using Struts2 s:set variables with getText()
將Struts2與JSP結合使用。 以下代碼工作正常:
<s:if test="foo == bar">
<s:set var="keyValue">message.string1</s:set>
</s:if>
<s:else>
<s:set var="keyValue">message.string2</s:set>
</s:else>
<s:text name="%{keyValue}"/>
即,基於keyValue
,從資源文件中查找message.string1
或message.string2
並正確輸出到生成的HTML頁面。
但是,正如Struts標簽文檔底部所解釋的那樣,對於屬性值中的i18n,我不能使用Struts文本標簽,而是必須使用getText('...')
:
<s:submit value="getText('message.string1')" ../>
問題是,我無法在上面的getText()
調用中解析%{keyValue}
,無論我嘗試什么語法: getText('%{keyValue}')
, getText(%{keyValue})
, getText(keyValue)
, getText('keyValue')
它最終被評估為null。 這是我的語法錯誤還是根本無法完成? 如果必須,我知道我可以回到使用<s:if>
和<s:else>
並在每個下面使用提交標記:
<s:if test="foo == bar">
<s:submit value="getText('message.string1')" ../>
</s:if>
<s:else>
<s:submit value="getText('message.string2')" ../>
</s:else>
......但如果可能的話,我想避免重復。
盡管普通keyValue
在大多數情況下都可以使用,但最好使用#
為<s:set>
標記的var
值加前綴。 您應該在整個表達式周圍只使用一對%{}
。
<s:submit value="%{getText(#keyValue)}" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.