在action中代码:
 if ("pingdu".equals(orgid.trim())) {
       mapurl="http://192.168.0.100:7001/aolppd/loginAction?username="+yhdm+"&pwd="+yhmm+"&yzm="+yzm;
   }
前台js:
<script type="text/javascript">
<!--
 swfobject.registerObject("FlashID");
  var mapUrl = '<s:property value="mapurl"/>';
if(mapUrl != ""){
 window.open(mapUrl);  }//-->
</script>
这样打开的网址地址栏的参数都会看见、我该怎么做才能把?后面的参数变成username%3d%26quot%3b%2byhdm%2b%26quot%3b%26pwd%3d%26quot%3b%2byhmm%2b%26quot%3b%26yzm%3d%26quot%3b%2byzm这种或者别的方式也行。让用户看不懂。前台js里面包含着一个flash、是点击falsh里面的内容、打开新窗口。分不够可以再加。只求能解决。我用过URLEncoder.encode()方法、不行

解决方案 »

  1.   

    传中文或特殊字符就会这样,不用表单提交不行么?就是submit那种,就不会有这种情况了。如果真要这样,估计要在action里对这些参数进行格式转换,比如 str.getBytes(str.getBytes("iso-8859-1"),"utf-8");之类。。
      

  2.   

    这个转码不知道是不是这么转的 private String parse(String s) {
    StringBuffer sb = new StringBuffer();
    char c;
    for (int i = 0; i < s.length(); i++) {
    c = s.charAt(i);
    if (c >= 0 && c <= 255) {
    sb.append(c);
    } else {
    byte[] b;
    try {
    b = Character.toString(c).getBytes("utf-8");
    } catch (Exception ex) {
    logger.error("ConsumeSortAction.parse " + ex);
    b = new byte[0];
    }
    int k=0;
    for (int j = 0; j < b.length; j++) {
     k= b[j];
    if (k < 0)
    k += 256;
    sb.append("%" + Integer.toHexString(k).toUpperCase());
    }
    }
    }
    return sb.toString();
    }
      

  3.   

    传参的时候转码~~ 到ACTION里  解码
    转码没有一定的规则 看自己喜好
      

  4.   

    我传的参数值没有中文、那个action是在falsh里面的超连接里面用到的、没有用表单提交、