0

Struts2 Web アプリケーションでいくつかのラジオボタンをレンダリングしようとしています。

各ラジオボタンのvalueは整数であり、関連付けられたラベルは i18n テキストである必要があります。これは値の関数として変化します。i18n キーの形式Common.eventTypeId.<<integer value>>は , です (例: Common.eventTypeId.28Common.eventTypeId.29など)。

ただし、ページにアクセスすると、間違ったキーがあるため、ラベルが翻訳されません: Common.eventTypeId.null. value私を困惑させているのは、i18nキーを構築するために使用されたのと同じ変数が、ラジオボタンのとして正常にレンダリングされることです。

HTML コードが生成されるスニペットを次に示します。eventTypeIdsは、List<Integer>28、29、31 の 3 つの要素を含む です。

<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 キーを作成するとき、その変数は null であることに注意してください。私は何が欠けていますか?s:radio タグの使い方を誤解していませんか?

4

1 に答える 1

3

タグ内で var#を使用する前に欠落しています。eTypeId<s:set>

<s:set var="label" value="%{getText('Common.eventTypeId.' + #eTypeId )}"/>

BTW<s:radio>は反復可能なソースを属性で受け取るため、ラジオ タグ内でリストlistを使用して、属性とキーワードで翻訳されたテキストを取得できます。eventTypeIdslistValuetop

<s:radio name="currentActivity.eventTypeId" list="eventTypeIds" 
              listValue="%{getText('Common.eventTypeId.' + top)}"/> 
于 2013-03-01T10:35:37.030 に答える