表层function letter_save(){
   var c=$('id').value;
   var s=document.all.LETTER_SEQ.value;
   var n=document.all.LETTER_NAME.value;
   var form=document.forms[0];
   alert(n);
   form.action="/humanres/letter.shtml?method=edit&letterCode="+c+"&letterSeq="+s+"&letterName="+n;
   form.submit();
        }低层public ActionForward edit(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
// TODO Auto-generated method stub
Map map = new HashMap();
map.put("LETTER_ID",this.getParameter(request, "letterCode"));
map.put("LETTER_SEQ", this.getParameter(request, "letterSeq"));
map.put("LETTER_NAME", this.getParameter(request, "letterName"));
this.getHanton().getEmpLetterDAO().update(map);
return this.tree(mapping, form, request, response);
}为什么我的编辑完事之后显示的却是乱码的NAME? 在JS中n的值还是正常的,可在低层中map里的值就已经是乱码的了?
请问这是为什么?
并且我还有个增加的功能缺可以实现。

解决方案 »

  1.   

    用个过滤器就好了!要不在你的method=edit里加上
    request.setCharacterEncoding("gb2312");
      

  2.   


      public ActionForward edit(ActionMapping mapping, ActionForm form,
                HttpServletRequest request, HttpServletResponse response)
                throws Exception {
            // TODO Auto-generated method stub        request.setCharacterEncoding("gb2312");        Map map = new HashMap();
            map.put("LETTER_ID",this.getParameter(request, "letterCode"));
            map.put("LETTER_SEQ", this.getParameter(request, "letterSeq"));
            map.put("LETTER_NAME", this.getParameter(request, "letterName"));
            this.getHanton().getEmpLetterDAO().update(map);
            return this.tree(mapping, form, request, response);
        }
      

  3.   

    乱码问题看看这个http://www.pmjava.com/musicframe.asp?f=index
      

  4.   

    一般情况下request.setCharacterEncoding("gb2312");可以解决问题
    如果真的不行的话可以在js中对name进行encodeURI下
    然后服务器端通过DecodeURI.decode转换过来,保证ok
      

  5.   

    这个确实不行
    这是我调试MAP的值
    {LETTER_NAME=asd????随碟附é€, LETTER_SEQ=3, LETTER_ID=1230599211195_1}
      

  6.   


    试试这样
    String letterName = new String(request.getParameter("letterName").getBytes("ISO8859-1"),"GB2312");
    map.put("LETTER_NAME", letterName);
      

  7.   

    好了,现在我换个方式实现了,直接对控件的name进行取值,而不用现在这种通过action传值的方式。不过这个问题我还是没搞清楚
    结贴给分了,谢谢大家