我試圖在Struts2 Web應用程序中渲染幾個單選按鈕。變量在使用getText時具有空值,但在渲染單選按鈕時不具有空值
每個單選按鈕的value
是一個整數,其關聯的標籤應該是一個國際化的文本,它隨着值的變化而變化。 i18n密鑰的格式爲Common.eventTypeId.<<integer value>>
(例如,Common.eventTypeId.28
,Common.eventTypeId.29
等)。
但是,當我訪問該頁面時,標籤不會被翻譯,因爲有錯誤的鍵:Common.eventTypeId.null
。讓我感到困惑的是,用於構建i18n鍵的相同變量呈現爲單選按鈕的value
。
以下是生成HTML代碼的代碼片段。 eventTypeIds
是List<Integer>
含有3個要素:28,29和31
<s:iterator value="eventTypeIds" var="eTypeId">
<div class="frm-field">
<s:set var="label" value="%{getText('Common.eventTypeId.' + eTypeId)}"/>
<s:radio name="currentActivity.eventTypeId" list="eTypeId" listValue="label"/>
</div>
</s:iterator>
相關I18N鍵:
Common.eventTypeId.29 = CAA
Common.eventTypeId.28 = Practical
Common.eventTypeId.31 = Non-assessable activity
這正在生成現在的實際HTML:
<div class="frm-field">
<input type="radio" value="29" checked="checked" id="frm-activity_currentActivity_eventTypeId29" name="currentActivity.eventTypeId">
<label for="frm-activity_currentActivity_eventTypeId29">Common.eventTypeId.null</label>
</div>
<div class="frm-field">
<input type="radio" value="28" id="frm-activity_currentActivity_eventTypeId28" name="currentActivity.eventTypeId">
<label for="frm-activity_currentActivity_eventTypeId28">Common.eventTypeId.null</label>
</div>
<div class="frm-field">
<input type="radio" value="31" id="frm-activity_currentActivity_eventTypeId31" name="currentActivity.eventTypeId">
<label for="frm-activity_currentActivity_eventTypeId31">Common.eventTypeId.null</label>
</div>
這將是預期的HTML:
<div class="frm-field">
<input type="radio" value="29" checked="checked" id="frm-activity_currentActivity_eventTypeId29" name="currentActivity.eventTypeId">
<label for="frm-activity_currentActivity_eventTypeId29">CAA</label>
</div>
<div class="frm-field">
<input type="radio" value="28" id="frm-activity_currentActivity_eventTypeId28" name="currentActivity.eventTypeId">
<label for="frm-activity_currentActivity_eventTypeId28">Practical</label>
</div>
<div class="frm-field">
<input type="radio" value="31" id="frm-activity_currentActivity_eventTypeId31" name="currentActivity.eventTypeId">
<label for="frm-activity_currentActivity_eventTypeId31">Non-assessable activity</label>
</div>
請注意,正在使用eTypeId
變量正確顯示整數值,但構建i18n密鑰時該變量爲空。我錯過了什麼?我誤解了s:radio標籤的使用情況嗎?
謝謝!我知道我忽略了一些代碼。 – orique 2013-03-01 10:45:32