struts2 + sitemesh 国际化的问题

在项目中按李刚书上所讲的国际化,用户自定义语言时,出现了下面的情况(struts2 + spring + sitemesh):

 

1  只有选择语言的页面发生了改变

 

2 只有通过action 请求返回后的页面才被轩际化了 ,而直接以h.jsp请求时,页面还是以前的国际化信息

 

 

想了一下,可能原因是以 h.jsp等以非ACTION请求的,国际资料文件没有更新, 这可能与SITEMESH有关,具体原因不明

 

原来是S2只拦截ATION,而不拦截JSP所致。

 

解决问题的方法如下:

1      <constant name="struts.action.extension" value="action,jsp" />

 

2     <package name="default" extends="struts-default">    
         <action name="*">
             <result>{1}.jsp</result>
          </action>    
        </package>

 

上面action返回的路径写法一定要这样写,不能写成其它形式,如/{1).jsp,否则找不到

 

随便提一下,修改URL地址的问题,由于struts2可以拦截了jsp后缀的请求,所以在配置了struts.action.extension常量后,可以将所有发送请求的*.action修改成*.jsp,而其它的配置不必修改。这样,浏览器地址栏里就不会显示*.action这样的请求了,看起来就很统一了

 

 

 

 

你可能感兴趣的:(spring,jsp,struts,浏览器)