3

<s:select>タグで実装されているJSPページにドロップダウンメニューがあります

<s:select name="priorToApplyingInfo.userProfile.phoneNumbers[0].type"
 listKey="key" listValue="value" list="phoneTypes" headerKey="0" headerValue=""/>

ドロップダウン メニューの値は、ファイル内にphonetypes実装されているリストから取得さHashMap.javaます。

phoneTypes = new LinkedHashMap<Integer, String>();
phoneTypes.put(new Integer(1), getText("HOME"));
// Phone ContactBook category for the business phone
phoneTypes.put(new Integer(DAOHelperFactory.OWNER_PROFILE_PHONE_CATEGORY), getText("WORK"));
phoneTypes.put(new Integer(3), getText("MOBILE"));
phoneTypes.put(new Integer(DAOHelperFactory.OWNER_PROFILE_FAX_CATEGORY), getText("FAX"));
phoneTypes.put(new Integer(5), getText("OTHER"));

preferredContact = new ArrayList<String>();
preferredContact.add(getText("HOME"));
preferredContact.add(getText("WORK"));
preferredContact.add(getText("MOBILE"));
preferredContact.add(getText("FAX"));
preferredContact.add(getText("EMAIL"));
preferredContact.add(getText("OTHER"));

bestContactTime = new ArrayList<String>();
bestContactTime.add(getText("AFTERNOON"));
bestContactTime.add(getText("EVENING"));
bestContactTime.add(getText("MORNING"));

、 などのキーは、このページの国際化に取り組んでいるhome=homeファイルにあり、ドロップダウン メニューの値の翻訳を取得する方法が見つかりません。work=work.properties

4

3 に答える 3

1

requst_localeStruts2 アプリケーションでロケールを変更するには、リンクまたはフォームにパラメーターを含める必要があります。

<s:url var="urlen" includeParams="all" value="">
  <s:param name="request_locale">en</s:param>
</s:url>
<s:a href="%{#urlen}">English</s:a>

アクションクラスからロケールを変更したい場合は、ActionContextそれを設定し、HTTP セッションに入れます。

ActionContext.getContext().setLocale(locale);
session.put(I18nInterceptor.DEFAULT_SESSION_ATTRIBUTE, locale);

タグの属性getTextでJSPでもメソッドを呼び出すことができます。listValue<s:select>

<s:select name="priorToApplyingInfo.userProfile.phoneNumbers[0].type"
 list="phoneTypes" headerKey="0" headerValue=""
 listKey="key" listValue="%{getText(value)}"/>
于 2013-08-23T17:09:32.197 に答える
0

リソースからメッセージを取得する前に、Struts2 でロケールを切り替えていないことがわかります。

getText()ローカライズされたメソッドであり、デフォルトのテキスト プロバイダーをデフォルトの動作として使用する場合は、ロケール固有のキーを検索します。アクション コンテキストから、またはアクションから直接、Struts2 が使用する現在のロケールを取得できますActionSupport(アクションがあり、それを拡張することはまだ見ていません)。

通常、ロケールの切り替えはi18n、パラメーターを request に入れるインターセプターを介して行われますrequest_locale。ただし、アクションコンテキストでロケールを変更することで切り替えることができます (現在と同じスレッドを実行していることを確認してください)。


ActionContext.getContext().setLocale(new Locale("es"));

getText()ローカライズされたメッセージを取得するには、実行する前にこのコードを実行する必要があります。

于 2013-08-24T08:58:30.693 に答える