浏览 528 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-07-02
我在做一个工作流的项目,以前是用struts2+jbpm做的,没有遇到这个问题,但是当我用spring来整合的时候却出现了jsp界面到Action类传的值出现了乱码。
我的jsp界面:checkApprove.jsp:
<%@ page language="java" pageEncoding="UTF-8"
contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
...
<s:form action="processApproveResult">
<s:if test="#userRole==2">
<s:select name="result" label="审核意见"
list="{'Info审核同意','info审核不同意','重新填写信息'}">
</s:select>
</s:if>
<s:elseif test="#userRole==3">
<s:select name="result" label="审核意见"
list="{'最后审核同意','最后审核不同意'}">
</s:select>
</s:elseif>
<s:else>
</s:else>
<s:textfield name="memo" label="备注"></s:textfield>
<s:submit value="提交" />
<s:reset value="重置" />
</s:form>...
对应的Action类是:ProcessApproveResult.java
public class ProcessApproveResult implements Action, ModelDriven {
public Log log = LogFactory.getLog(ProcessApproveResult.class);
private Approve approve = new Approve();
public String execute() throws Exception {
...
//为什么下面这行得到result变量是乱码?
String result = approve.getResult(); ....
}
public Approve getModel() {
return approve;
}
}
其中Approve类是对请求的封装:
public class Approve implements java.io.Serializable {
private String result;
private String memo;
//省略get和set
}
为什么在我的那个红色代码行得到是乱码啊,我的jsp界面用了UTF-8,我的整个项目也是UTF-8的,有谁遇到过啊,难道我自己得写一个过滤类,对请求的参数再设置一下格式? 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-07-05
自己写个过滤器
|
|
| 返回顶楼 | |
|
最后更新时间:2008-07-05
提交要过滤的!
|
|
| 返回顶楼 | |
|
最后更新时间:2008-07-05
转至:http://www.family168.com/tutorial/jsp/html/jsp-ch-07.html
批量设置请求编码 编码问题会不会成为中国人学java的标志呢? 通过之前的讨论第 2.2.2 节 “POST乱码”,我们知道为了避免提交数据的乱码问题,需要在每次使用请求之前设置编码格式。在你复制粘贴了无数次request.setCharacterEncoding("gb2312");后,有没有想要一劳永逸的方法呢?能不能一次性修改所有请求的编码呢? 用Filter吧,它的名字是过滤器,可以批量拦截修改servlet的请求和响应。 我们编写一个EncodingFilter.java,来批量设置请求编码。 package anni; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class EncodingFilter implements Filter { public void init(FilterConfig config) throws ServletException {} public void destroy() {} public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding("gb2312"); chain.doFilter(request, response); } } 在此EncodingFilter实现了Filter接口,Filter接口中定义的三个方法都要在EncodingFilter中实现,其中doFilter()的代码实现主要的功能:为请求设置gb2312编码并执行chain.doFilter()继续下面的操作。 与servlet相似,为了让filter发挥作用还需要在web.xml进行配置。 <filter> <filter-name>EncodingFilter</filter-name> <filter-class>anni.EncodingFilter</filter-class> </filter> <filter-mapping> <filter-name>EncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> filter标签部分定义使用的过滤器,filter-mapping标签告诉服务器把哪些请求交给过滤器处理。这里的/*表示所有请求,/表示根路径,*(星号)代表所有请求,加在一起就变成了根路径下的所有请求。 这样,所有的请求都会先被EncodingFilter拦截,并在请求里设置上指定的gb2312编码。 例子在lingo-sample/07-01目录下,这次我们不需要在test.jsp中为请求设置编码也可以得到正常的中文参数了,EncodingFilter圆满的完成了它的工作。 |
|
| 返回顶楼 | |
|
最后更新时间:2008-07-07
在服务器配置文件里改下
|
|
| 返回顶楼 | |



