关于这个问题,首先得明白jsp页面数据----到----ActionForm----到----Action的顺序,
一般来说jsp页面的数据提交无非是get方式或者post方式,通过request都可以得到,所以,
凡是使用LookupDispatchAction时出现中文信息支持问题的,均是出在这个中间环节
----formbean上了。
出现这个问题的原因是request默认的编码是iso,而从jsp传入的数据包括了gbk,所以,
到Action中后,因为LookupDispatchAction要根据Value找key,而value它不认识,所以就出现
了错误。
解决方案是:为这种Action专门写一个ActionForm,这个ActionForm中要专门设置request的
编码类型,这样,传到后台的数据和资源文件保持了一致,所以还是能被识别的。
下面是例子:
1、struts-config.xml中对FormBean的定义
<form-bean name="requestForm" type="com.frame.webFrame.portal.RequestForm"/>
2、Action的配置:
<action name="requestForm" parameter="act" path="/requisitionAction" type="...">
3、RequestForm
package com.frame.webFrame.portal;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import javax.servlet.http.HttpServletRequest;
import java.io.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class RequestForm extends ActionForm{
Log log = LogFactory.getLog(RequestForm.class);
public void reset(ActionMapping mapping,
HttpServletRequest request) {
try {
request.setCharacterEncoding("GBK");
}
catch (UnsupportedEncodingException ex) {
log.error("encoding error! ",ex);
}
}
}
4、资源文件一例(为上述的GBK编码)
CreateApplyForm.saveApplyForm=\u4fdd\u5b58\u7533\u8bf7\u5355
有了上面的例子,你使用LookupDispatchAction就更顺手了
发表于 @ 2005年02月21日 15:20:00|评论(loading...)