通过java后台拼接json字符串修改页面样式----一页多用 + 双引号(")和单引号(')截断字符串解决方案
2013-11-15 22:11
806 查看
注:Java返回的Json格式为 {“a":"b"} 即 key 与 value 在java中拼接时均需要包含引号 即 {\"a\":\"b\"} 转义;
[java] view
plaincopy
1.组装json格式字符串
* 通过读取流程对应工单的字段权限 将字段权限拼接为json格式字符串
* 拼接json字符串格式:
* [{"fieldNane":"name1","fieldRight":"right1"},{"fieldNane":"name2","fieldRight":"right2"},...{"fieldNane":"name3","fieldRight":"right3"}]
* @param list
* @return
*/
public String append2Json(List list){
StringBuffer sb = new StringBuffer("[");
for(int i=0;i<list.size();i++){
FwtActionRight farObj = (FwtActionRight)list.get(i);
String fieldName = farObj.getFieldName().toLowerCase();
String fieldRight = farObj.getFieldRight().toLowerCase();
sb.append("{\"fieldName\":\"");
sb.append(fieldName);
sb.append("\",\"fieldRight\":\"");
sb.append(fieldRight);
sb.append("\"");
sb.append("},");
//最后一个元素的右边大括号'}'后不添加','
if(i==list.size()-1){
sb.append("{\"fieldName\":\"");
sb.append(fieldName);
sb.append("\",\"fieldRight\":\"");
sb.append(fieldRight);
sb.append("\"");
sb.append("}");
}
}
sb.append("]");
String str = sb.toString().replaceAll("\"", "%22");//避免js获取此字符串时被双引号(")截断
//String str = sb.toString().replaceAll("\"", "%27");////避免js获取此字符串时被单引号(')截断
return str;
}
2.获取表单字段对应的权限,将其拼接为json格式的字符串,并且将其值传到页面<br>
<pre name="code" class="java"> /**
* 显示‘现场检查’步骤--填单页面
* @param mapping
* @param form
* @param request
* @param response
* @return
* @throws Exception
*/
public ActionForward showAddNPatrolOrder_localeCheck(ActionMapping mapping,ActionForm form,
HttpServletRequest request,HttpServletResponse response)throws Exception{
String actionName="现场检查";
String flowName="设备巡维工作联系单";
String tableName="MAP_HISTORY_NPATROL";
List list = swfBiz.getFwtActionRights(actionName,tableName,flowName);
//拼接json格式的字符串
String jsonStr = this.append2Json(list);
request.setAttribute("elementJson", jsonStr);
return mapping.findForward("success");
}
3.jsp页面上的json格式字符串值</p>
<input name="elements" id="elements" type="text" style="DISPLAY: none; WIDTH: 77px; HEIGHT: 22px" size="10" value="${elementJson }"/>
4.js jQuery取页面上的json字符串格式值,并将其解析,转为json数据类型,然后根据不同字段的权限,写入其相应的格式。
/**
* 显示‘现场检查’页面
*/
var elementList = $('#elements').val();
elementList = unescape(elementList);//解析双引号、单引号
var json = eval('('+elementList+')');//json格式字符串转为json数据类型
for(var i=0;i<json.length;i++){
var fieldName = json[i].fieldName;
var fieldRight = json[i].fieldRight;
if(fieldRight=='r'){//r--只读
$('#'+fieldName).attr("readonly","");
$('#'+fieldName).attr("readonly","readonly");
$('#'+fieldName).css("border-style","none");//.css("background-color","red");
}else if(fieldRight=='w'){//w--可写
$('#'+fieldName).attr("readonly","");
$('#'+fieldName).css("border-style","");//.css("background-color","green");
}
}
[java] view
plaincopy
1.组装json格式字符串
* 通过读取流程对应工单的字段权限 将字段权限拼接为json格式字符串
* 拼接json字符串格式:
* [{"fieldNane":"name1","fieldRight":"right1"},{"fieldNane":"name2","fieldRight":"right2"},...{"fieldNane":"name3","fieldRight":"right3"}]
* @param list
* @return
*/
public String append2Json(List list){
StringBuffer sb = new StringBuffer("[");
for(int i=0;i<list.size();i++){
FwtActionRight farObj = (FwtActionRight)list.get(i);
String fieldName = farObj.getFieldName().toLowerCase();
String fieldRight = farObj.getFieldRight().toLowerCase();
sb.append("{\"fieldName\":\"");
sb.append(fieldName);
sb.append("\",\"fieldRight\":\"");
sb.append(fieldRight);
sb.append("\"");
sb.append("},");
//最后一个元素的右边大括号'}'后不添加','
if(i==list.size()-1){
sb.append("{\"fieldName\":\"");
sb.append(fieldName);
sb.append("\",\"fieldRight\":\"");
sb.append(fieldRight);
sb.append("\"");
sb.append("}");
}
}
sb.append("]");
String str = sb.toString().replaceAll("\"", "%22");//避免js获取此字符串时被双引号(")截断
//String str = sb.toString().replaceAll("\"", "%27");////避免js获取此字符串时被单引号(')截断
return str;
}
2.获取表单字段对应的权限,将其拼接为json格式的字符串,并且将其值传到页面<br>
<pre name="code" class="java"> /**
* 显示‘现场检查’步骤--填单页面
* @param mapping
* @param form
* @param request
* @param response
* @return
* @throws Exception
*/
public ActionForward showAddNPatrolOrder_localeCheck(ActionMapping mapping,ActionForm form,
HttpServletRequest request,HttpServletResponse response)throws Exception{
String actionName="现场检查";
String flowName="设备巡维工作联系单";
String tableName="MAP_HISTORY_NPATROL";
List list = swfBiz.getFwtActionRights(actionName,tableName,flowName);
//拼接json格式的字符串
String jsonStr = this.append2Json(list);
request.setAttribute("elementJson", jsonStr);
return mapping.findForward("success");
}
3.jsp页面上的json格式字符串值</p>
<input name="elements" id="elements" type="text" style="DISPLAY: none; WIDTH: 77px; HEIGHT: 22px" size="10" value="${elementJson }"/>
4.js jQuery取页面上的json字符串格式值,并将其解析,转为json数据类型,然后根据不同字段的权限,写入其相应的格式。
/**
* 显示‘现场检查’页面
*/
var elementList = $('#elements').val();
elementList = unescape(elementList);//解析双引号、单引号
var json = eval('('+elementList+')');//json格式字符串转为json数据类型
for(var i=0;i<json.length;i++){
var fieldName = json[i].fieldName;
var fieldRight = json[i].fieldRight;
if(fieldRight=='r'){//r--只读
$('#'+fieldName).attr("readonly","");
$('#'+fieldName).attr("readonly","readonly");
$('#'+fieldName).css("border-style","none");//.css("background-color","red");
}else if(fieldRight=='w'){//w--可写
$('#'+fieldName).attr("readonly","");
$('#'+fieldName).css("border-style","");//.css("background-color","green");
}
}
相关文章推荐
- 将服务端的一个JSON格式的字符串输出给客户端js,客户端接收到的字符串里双引号被转义成“ "”的解决方案
- 前端 js 拼接json数据 ,以及后端java转义 &quot; 字符串
- Java (JSONArray、JSONObject、String字符串中)引号""替换成"-"
- jsp页面提示“Multiple annotations found at this line: - The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path”解决方案
- 手把手教你们通过jquery ajax调用查询java struts2后端数据+js拼接字符串
- java中拼接Json字符串
- java后台获取页面下拉框的选项只值,判断字符串是否相等
- 将后台数据(C#)转换成JSON字符串传到页面转换成json对象存储在JS中
- 多层级标签的提交,利用jquery拼接json,后台转java对象
- json数据与JAVA数据的转换 jsonJavaBean.netApache 自己编写了一个工具类,处理页面提交json格式数据到后台,再进行处理成JAVA对象数据 1、DTO:Data T
- 前台用的是ajax请求,后台json字符串拼接方式
- Java后台解析android端发送的JSON字符串
- java 替换json字符串中间的引号保留两边的引号,避免json校验失败
- java后台 通过HTTP接口获取json数据
- 通过Ajax请求后台数据,返回JSONArray(JsonObject),页面(Jquery)以table的形式展示
- spring mvc底层通过消息转换器 解析json字符串/json对象成JavaBean
- 后台接收JSON字符串,java解析
- IE8中页面接收后台json字符串乱码问题
- Json拼接字符串必须用双引号
- java后台JSON解析前台传入的数组JSON字符串