1. 程式人生 > >js前臺編碼,java後臺解碼,el表示式拼裝param中文引數編碼

js前臺編碼,java後臺解碼,el表示式拼裝param中文引數編碼

js前臺編碼:

1.使用兩次encode

function query(nameObj,brandnameObj){
  var namevalue = window.encodeURI(window.encodeURI(nameObj.value));
  var brandnamevalue = encodeURI(encodeURI(brandnameObj.value));
  var form = document.forms[0];
  form.action="<html:rewrite action='/product/list.do'/>?sort=&name="+namevalue+"&brandname="+brandnamevalue;
  form.submit();
 }

2.使用一次encode

function query(nameObj,brandnameObj){
  var namevalue = window.encodeURI(nameObj.value);
  var brandnamevalue = encodeURI(brandnameObj.value);
  var form = document.forms[0];
  form.action="<html:rewrite action='/product/list.do'/>?sort=&name="+namevalue+"&brandname="+brandnamevalue;
  form.submit();
 }

java後臺解碼(對應前臺兩次編碼):

1.死都不知道怎麼死的方法:

   if(formbean.getName() != null && !"".equals(formbean.getName())){
    formbean.setName(URLDecoder.decode(formbean.getName(),"UTF-8"));
    jpql.append(" and o.name like ?"+(parmars.size()+1));
    parmars.add("%"+formbean.getName()+"%");
   }

2.正確方法:

if(formbean.getName() != null && !"".equals(formbean.getName())){
    String name= URLDecoder.decode(formbean.getName(),"UTF-8");
    jpql.append(" and o.name like ?"+(parmars.size()+1));
    parmars.add("%"+name+"%");
   }

java後臺解碼(對應前臺一次編碼):

   if(formbean.getName() != null && !"".equals(formbean.getName())){
    String name = new String(formbean.getName().getBytes("iso-8859-1"),"UTF-8");
    jpql.append(" and o.name like ?"+(parmars.size()+1));
    parmars.add("%"+name+"%");
   }

el表示式分頁param中文請求引數:

function topage(page){
  var form = document.forms[0];
  var namevalue="";
  var brandnamevalue="";
  namevalue = window.encodeURI("${param.name}");
  brandnamevalue = encodeURI("${param.brandname}");
form.action="<html:rewrite action='/product/list.do'/>?sort=<c:if test="${!empty param.sort}">${param.sort}</c:if><c:if test="${!empty param.name}">&name=</c:if>"+namevalue+"<c:if test="${!empty param.brandname}">&brandname=</c:if>"+brandnamevalue;

  form.page.value=page;
  form.submit();
 }

綜上:

注意最主要的一點就是java自動會進行一次url轉碼操作,所以那個不知道怎麼死的方法,就是因為轉碼之後又賦給formbean就已經亂碼了。

而用el表示式取出請求引數時,只需要進行一次編碼即可。