问题描述:
JSP页面:
<html:form method="GET" action="Search.do">
<html:text property="name" />
<html:submit />
</html:form>
Form类:
...
public String getName() ...{
return name;
}

public void setName(String name) ...{
this.name = name;
}
...
Action类:
ActionForward 函数里:
strName = new String(request.getParameter("name").getBytes("ISO-8859-1"), "GB2312");
// 这样就可以用strName去使用name参数了!
// 但是现在要使得JSP页面显示name参数值
// 因为第一次进入JSP的时候name是null的
// 于是使用下面的方法设置,但是JSP页面会出现中文乱码!why?
strName = new String(form.getName().getBytes("ISO-8859-1"),"GB2312");
// 另:如果上面这条语句隐去,直接执行下面的也会乱码!
request.setAttribute("name", strName == null ? "" : strName);
原因出在JSP页面中的<html:text property="name" />语句:
property并不会解释name对象,因此在action页面采用request.setAttribute方法是会产生乱码的!
解决方案:
在最后一行加上form.setName(form.getName.getBytes("ISO-8859-1"),"GB2312");语句即可!
本文介绍了一个Struts框架中JSP页面出现中文乱码的问题,并提供了详细的解决方案。通过对Form对象的处理,确保了请求参数正确解析。
2355

被折叠的 条评论
为什么被折叠?



