关于Struts2 标签<s:property>中文乱码问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Struts2 标签<s:property>中文乱码问题相关的知识,希望对你有一定的参考价值。

这是个list集合,输入里面的一个字段是keyword,然后用s:generator标签以逗号分割 然后拼凑成a标签。因为关键字keyword可能是 中文。但是在页面上显示就为乱码,请问如何解决。从数据库中查出的关键字并为进行任何处理。目前查看页面源代码是这样的,url链接显示还是中文,再点链接时,在IE浏览器下乱码

我参考了一下其它的网站,在查看源代码的时候这些中文自动转换成%25E6%25AC%25A7%25E7%25BE%258E%25E6%25B5%2581%25E8%25A1%258C类型的,请问应该怎么解决
<s:iterator value="newestList" id="article">
<ul class="keywords">
<s:generator separator="," val="#article.keyword" var="key">
<s:iterator value="#key"><li><a href='search.do?keyword=<s:property>' title="<s:property/>" target="_blank"><s:property/></a> </li></s:iterator>
</s:generator>
</ul>
</s:iterator>

当调用另一个jsp页面时 tomcat或者你用的是别的服务器 默认是按照GBK读取 mytemplate.jsp页面的
设置tomcat的安装路径中的bin目录下server.xml默认编码 
<Connector port="8081" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" URIEncoding="UTF-8" />
可以解决问题

参考技术A response设置编码格式没有? 参考技术B 标签加入escape='false'

关于struts2标签的 <s:if test="表达式">中,表达式问题

jsp中,在$(document).ready(function()后第一句定义了一个var flag=true; 在后面的显示部分 这个判断总是不对 是取值方式不对 还是页面定义的变量在struts2标签里不能取?
jsp中,在$(document).ready(function()后第一句定义了一个var flag=true; script结束后,到显示部分,通过<s:if test="flag==true">来完成某项判断,但是这个判断总是不对,flag的值不能成功读出, 是取值方式不对 还是页面定义的变量在struts2标签里不能取?

使用<s:set var="flag" value="true"/>试试吧
var flag = true;你是定义了一个js变量,跟struts2没关系的。
set标签是给struts2的上下文环境中增加一个临时变量flag,值是true

判断也改下
<s:if test=\'flag=="true"\'>因为true是一个字串必须带引号。
参考技术A js中定义的变量只能在js块里面用,出了那个函数就不能用了!

以上是关于关于Struts2 标签<s:property>中文乱码问题的主要内容,如果未能解决你的问题,请参考以下文章

关于struts2标签的 <s:if test="表达式">中,表达式问题

关于Struts2的界面的摆放

Struts2框架使用之关于Struts2的result配置

Struts2之标签使用

struts2的if标签用法

Struts2 控件标签