簡體   English   中英

使用Struts2:使用getText()設置變量

[英]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.string1message.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM