通过java后台拼接json字符串修改页面样式----一页多用 + 双引号(")和单引号(')截断字符串解决方案

注:Java返回的Json格式为 {“a":"b"}  即 key 与 value 在java中拼接时均需要包含引号 即 {\"a\":\"b\"} 转义;

[java]
  view plain copy
  1. 1.组装json格式字符串   
  2. * 通过读取流程对应工单的字段权限 将字段权限拼接为json格式字符串 
  3.      * 拼接json字符串格式: 
  4.      * [{"fieldNane":"name1","fieldRight":"right1"},{"fieldNane":"name2","fieldRight":"right2"},...{"fieldNane":"name3","fieldRight":"right3"}] 
  5.      * @param list 
  6.      * @return 
  7.      */
  8.  public String append2Json(List list){  
  9.         StringBuffer sb = new StringBuffer("[");  
  10.         for(int i=0;i<list.size();i++){  
  11.             FwtActionRight farObj = (FwtActionRight)list.get(i);  
  12.             String fieldName = farObj.getFieldName().toLowerCase();  
  13.             String fieldRight = farObj.getFieldRight().toLowerCase();  
  14.             sb.append("{\"fieldName\":\"");  
  15.             sb.append(fieldName);  
  16.             sb.append("\",\"fieldRight\":\"");  
  17.             sb.append(fieldRight);  
  18.             sb.append("\"");  
  19.             sb.append("},");  
  20.             //最后一个元素的右边大括号'}'后不添加','  
  21.             if(i==list.size()-1){  
  22.                 sb.append("{\"fieldName\":\"");  
  23.                 sb.append(fieldName);  
  24.                 sb.append("\",\"fieldRight\":\"");  
  25.                 sb.append(fieldRight);  
  26.                 sb.append("\"");  
  27.                 sb.append("}");  
  28.             }  
  29.         }  
  30.         sb.append("]");  
  31.         String str = sb.toString().replaceAll("\"""%22");//避免js获取此字符串时被双引号(")截断  
  32.         //String str = sb.toString().replaceAll("\"", "%27");避免js获取此字符串时被单引号(')截断  
  33.         return str;  
  34.     }

  35. 2.获取表单字段对应的权限,将其拼接为json格式的字符串,并且将其值传到页面<br>  
  36. <pre name="code" class="java"/** 
  37.      * 显示‘现场检查’步骤--填单页面 
  38.      * @param mapping 
  39.      * @param form 
  40.      * @param request 
  41.      * @param response 
  42.      * @return 
  43.      * @throws Exception 
  44.      */  
  45.     public ActionForward showAddNPatrolOrder_localeCheck(ActionMapping mapping,ActionForm form,  
  46.             HttpServletRequest request,HttpServletResponse response)throws Exception{  
  47.         String actionName="现场检查";  
  48.         String flowName="设备巡维工作联系单";  
  49.         String tableName="MAP_HISTORY_NPATROL";  
  50.         List list = swfBiz.getFwtActionRights(actionName,tableName,flowName);  
  51.         //拼接json格式的字符串  
  52.         String jsonStr = this.append2Json(list);  
  53.         request.setAttribute("elementJson", jsonStr);  
  54.         return mapping.findForward("success");  
  55.     }  
  56.     
  57. 3.jsp页面上的json格式字符串值</p>  
  58. <input name="elements" id="elements" type="text" style="DISPLAY: none; WIDTH: 77px; HEIGHT: 22px" size="10" value="${elementJson }"/>

  59. 4.js jQuery取页面上的json字符串格式值,并将其解析,转为json数据类型,然后根据不同字段的权限,写入其相应的格式。  
  60. /** 
  61.      * 显示‘现场检查’页面 
  62.      */   
  63.     var elementList = $('#elements').val();  
  64.     elementList = unescape(elementList);//解析双引号、单引号  
  65.     var json = eval('('+elementList+')');//json格式字符串转为json数据类型  
  66.     for(var i=0;i<json.length;i++){  
  67.         var fieldName = json[i].fieldName;  
  68.         var fieldRight = json[i].fieldRight;  
  69.         if(fieldRight=='r'){//r--只读  
  70.             $('#'+fieldName).attr("readonly","");  
  71.             $('#'+fieldName).attr("readonly","readonly");  
  72.             $('#'+fieldName).css("border-style","none");//.css("background-color","red");  
  73.         }else if(fieldRight=='w'){//w--可写  
  74.             $('#'+fieldName).attr("readonly","");  
  75.             $('#'+fieldName).css("border-style","");//.css("background-color","green");  
  76.         }  
  77.     }
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值