[Seasar-user:17343] 【SAStruts】Struts1.2のLocaleActionを使うには?

Takeshi Motegi [E-MAIL ADDRESS DELETED]
2009年 4月 29日 (水) 20:50:46 JST


お世話になってます。
茂木です。

早速ですが、質問があります。

SAStrutsでのお試しアプリを色々と作成しているのですが、
そんな中で、1つのJSP画面で日本語版と英語版を動的に
切り替えられるものを作成しようとしています。
↓
具体的には、
[English|Japanese]
のようなリンクがあって、"English"か"Japanese"をクリック
すると、
"English"→application.properties
"Japanese"→application_ja.properties
というようにリソースファイルを切り替えて、指定された言語
で画面を再表示するような。

で、このような場合にStruts1.2内のLocaleActionを使うと、簡単
に切り替えられるということで、これを利用しようとしているの
ですが、このような場合はどのように設定すればよろしいで
しょうか?

※※※
とりあえず、以下のように設定してみましたが、例外が発生して
しまいました。

例外の内容的には、「S2コンテナの中にLocaleActionが無いよ」
というエラーのようです。struts-config.xmlの設定を優先させて
処理させれば、いいのかなと思うのですが。いかんせん。その
やり方が見当つかずという次第で。。。

【struts-config.xml】
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
    <form-beans>
        <form-bean name="LangBean" 
type="org.apache.struts.action.DynaActionForm" >
           <form-property name="language" type="java.lang.String" />
           <form-property name="country" type="java.lang.String" />
           <form-property name="page" type="java.lang.String" />
        </form-bean>
    </form-beans>
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
    <action-mappings>
        <action name="LangBean" path="/supersample2-8/changeLocale.do" 
type="org.apache.struts.actions.LocaleAction">
          <forward name="success" path="WEB-INF/view/member/memberEntry.jsp" 
/>
        </action>
    </action-mappings>
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

【JSPのリンク部分】
  <TR>
  <TD><s:link 
action="/changeLocale.do?language=en&country=US&page=WEB-INF/view/member/memberEntry.jsp">English</s:link></TD>
  <TD><s:link 
action="/changeLocale.do?language=ja&country=JP&page=WEB-INF/view/member/memberEntry.jsp">日本語</s:link></TD>
  </TR>

【発生した例外】
致命的: サーブレット action のServlet.service()が例外を投げました
org.seasar.framework.container.ComponentNotFoundRuntimeException: [ESSR0046]コンポーネント(changeLocaleAction)が見つかりません
 at 
org.seasar.framework.container.impl.S2ContainerBehavior$DefaultProvider.acquireFromGetComponentDef(S2ContainerBehavior.java:165)
 at 
org.seasar.framework.container.impl.S2ContainerBehavior$DefaultProvider.acquireFromGetComponent(S2ContainerBehavior.java:158)
 at 
org.seasar.framework.container.impl.S2ContainerBehavior.acquireFromGetComponent(S2ContainerBehavior.java:62)
 at 
org.seasar.framework.container.impl.S2ContainerImpl.getComponent(S2ContainerImpl.java:124)
 at 
org.seasar.struts.config.S2ModuleConfig.findActionConfig(S2ModuleConfig.java:74)
 at 
org.seasar.struts.action.S2RequestProcessor.processMapping(S2RequestProcessor.java:141)
 at 
org.seasar.struts.action.S2RequestProcessor.process(S2RequestProcessor.java:92)
 at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
 at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
 at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
 at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at 
org.seasar.extension.filter.RequestDumpFilter.doFilter(RequestDumpFilter.java:127)
 at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
 at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at org.seasar.struts.filter.RoutingFilter.doFilter(RoutingFilter.java:144)
 at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
 at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at 
org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:63)
 at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
 at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at 
org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:79)
 at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
 at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at 
org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java:69)
 at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
 at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
 at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
 at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
 at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
 at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
 at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
 at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
 at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
 at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
 at java.lang.Thread.run(Thread.java:619) 



Seasar-user メーリングリストの案内