解决LookupDispatchAction使用中对中文信息支持的问题

来源:互联网 发布:dota2怎么公开数据 编辑:程序博客网 时间:2024/04/30 02:32

        关于这个问题,首先得明白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就更顺手了

原创粉丝点击