struts 的s:url标签参数乱码问题
<a
href="
<s:url action='findBook.action'>
<s:param name='bookCurrentPage'>
<s:property value="%{bookPageBean.currentPage+1}" />
</s:param>
<s:param name='bookName'>
<s:property value="bookName" />
</s:param>
</s:url>">下一页</a>
bookName为中文时,点击下一页时,传递的参数bookName出现乱码,从而查询不出满足要求的结果。
尝试了各种方法,像
1、 在struts配置文件中设置:
<constant name="struts.i18n.encoding" value="UTF-8" />
2、在web.xml文件中配置spring的过滤器
<filter>
<filter-name>setCharacterEncoding</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>setCharacterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3、进行解码
try {
bookName=new String(bookName.getBytes("utf-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
这三种方式均不能解决问题,最后只有修改tomcat的配置文件,在connecter项中添加 URIEncoding="UTF-8"
这样终于解决了问题!真是烦人的乱码啊,网上说法很多,不一定都能解决问题。