您的位置:首页 > 编程语言 > Java开发

关于struts2获取action中提示消息在jsp页面乱码的问题

2014-03-04 11:22 591 查看
问题描述:

最近在使用SSI写练习代码时,遇到了使用struts2的<s:actionmessage/>获取properties配置文件里的提示消息时,出现了乱码问题。查找了好久,才发现是配置文件编码格式的问题。properties默认的编码格式是ISO-8859-1,而我的Myeclipse里的properties文件由于公司项目的原因,把默认的的编码格式修改成了utf-8,导致乱码问题。

解决办法:

1、不要修改properties配置文件的默认的编码格式ISO-8859-1,在页面即可接到不乱码的中文提示。
获取消息,并弹出提示

<s:if test="hasActionErrors()">
<s:iterator value="actionErrors" var="msg" begin="0" end="0">
<script>
alert("<s:property value='#msg'/>");
</script>
</s:iterator>
</s:if>
<s:if test="hasActionMessages()">
<s:iterator value="actionMessages" var="msg" begin="0" end="0">
<script>
alert("<s:property value='#msg'/>");
</script>
</s:iterator>
</s:if>
<s:if test="hasFieldErrors()">
<s:iterator value="fieldErrors" var="msg" begin="0" end="0">
<script>
alert("<s:property value='#msg'/>");
</script>
</s:iterator>
</s:if>

2、properties配置文件的编码格式是utf-8,在页面接受消息时,进行转码操作。

Collection actionMessages = (Collection) request.getAttribute("actionMessages");
if (actionMessages != null) {
Iterator iter2 = actionMessages.iterator();
if (iter2.hasNext()) {
String mess = (String) iter2.next();
mess = new String(mess.getBytes("iso-8859-1"), "utf-8");
out.write("alert('" + mess + "');");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  乱码 utf-8 编码