サイトを多言語化したい。
を含む通常のインターセプタースタックがあります
<interceptor-ref name="i18n" />
ロケールを変更するための一般的な jsp:
<s:a action="locale-manager" namespace="/common">
<s:param name="request_locale">fa_IR</s:param>
فارسی
</s:a>
<s:a action="locale-manager" namespace="/common">
<s:param name="request_locale">en_US</s:param>
English
</s:a>
そして、単純な LocaleManager アクション
public class LocaleManager extends ActionSupport{
private static final Logger log = LoggerFactory.getLogger(LocaleManager.class);
public String execute() {
log.debug("Change the local to {}", getLocale() );
return "homepage";
}
}
上記のシナリオでは、i18n インターセプターは常にすべてのアクションに対して実行されますが、解決策はありません。ロケールは、ユーザーが locale-manager アクションをクリックしたときにのみ変更されるためです。
以下のように、インターセプタースタックを削除し、i18nインターセプターのみをLocaleManagerに追加しようとしました
@InterceptorRefs({ @InterceptorRef("i18n") })
public class LocaleManager extends ActionSupport{
.........
しかし、うまくいきませんでしたか?何か不足していますか、それとも独自のインターセプターを作成する必要がありますか?