`
yuanlanxiaup
  • 浏览: 858461 次
文章分类
社区版块
存档分类
最新评论

sitemesh的字符编码问题

 
阅读更多
今天帮朋友解决了一个sitemesh很奇怪的字符编码问题。

开发环境是NetBeans 4.1 + Tomcat。之前在此环境下开发的Web项目很正常,最近朋友决定使用sitemesh来管理页面,结果问题出来了:CSS、HTML、JSP等文件均没问题,但就是不能显示图像。并且每刷新一下页面,Tomcat就会报错:

严重: Javac exception
Compile failed; see the compiler error output for details.
...
at com.mike.Filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:51)
...
...vcss_bmp.java:45: 非法的表达式开始
...vcss_bmp.java:45: 非法字符: /15
...

看来问题出在字符编码上,检查页面编码,全设为gb2312,应该没问题,再检查web.xml,共有两处设置编码的地方。
第一个:
<filter>
<filter-name>setCharacterEncoding</filter-name>
<filter-class>com.mike.Filter.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>gb2312</param-value>
</init-param>
</filter>
...
<filter-mapping>
<filter-name>setCharacterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

另外一个地方是:
<jsp-property-group>
<display-name>JSP Property Group</display-name>
<url-pattern>/*</url-pattern>
<page-encoding>gb2312</page-encoding>
</jsp-property-group>
</jsp-config>

根据错误提示,先把第一个地方屏蔽掉,错误依旧。恢复第一个后,把第二个地方屏蔽掉,问题解决。想必是sitemesh里面所应用的chains of responsibility导致,但具体细节还不清楚。

所幸第一个方法没问题,表单中文处理正常。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics