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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值