项目中做导入的时候遇到个bug,用JSON.stringify()序列号json对象传给后台;然后后台通过getPatameter()获取值时,前台的英文引号变成了中文引号。

  原来代码如下:(自己排查发现就算是英文的时候也是如此)

//提交事件
$("#submitButton").bind("click",function(){
if($("#addForm").valid()){
var jsonStr = {};
$("#itemTable").find("input[lang='userAdd']").each(function(index,obj){
var nameAttr = $(obj).attr("id").trim();
var valueAttr = $('#'+nameAttr).combobox('getValue').trim();
if (valueAttr != "" && valueAttr != undefined) {
jsonStr[valueAttr] = nameAttr;
}
});
var json = new Object();
json.name = "ss";
json.age = "";
var data = JSON.stringify(json);
var att = {};
att["password"] = $("#text_pwd").val();
att["organization"] = $("#text_organization").combotree("getValue"); $(this).attr("disabled","disabled");
Loading(true,"<s:text name='cems.soft.progress.handling'></s:text>");//遮罩提示
$.doAjax({
url:'${basePath}/user/userAction_userAdd.do',
data:{"data":data,"arrdata":JSON.stringify(att)},
async:true,
success:function(responseText){

  在后台获取时,前台的英文引号,在后台变成了中文引号,导致JSON解析出错,报异常:net.sf.json.JSONException: Unquotted string '”ss”'

/**
* 映射字段
*/
public void userAdd(){
log.info("用户批量导入_PBEG");
this.msg=RESULT_FAIL;
long startTime = System.currentTimeMillis();//获取当前时间
String initPassword = "";
File file = null;
List<User> list = new ArrayList<User>();
List<UserCache> userCaches = new ArrayList<UserCache>();
List<String> failedFailName = new ArrayList<String>();
Organization default_org = null;
try {
String data = getRequest().getParameter("data");
String arrdata =getRequest().getParameter("arrdata");
JSONObject jsonData = JSONObject.fromObject(data);
JSONObject jsonArrdata = JSONObject.fromObject(arrdata);
String arrPassword = jsonArrdata.containsKey("password") ? jsonArrdata.getString("password") : "";
String arrOrganization = jsonArrdata.containsKey("organization") ? jsonArrdata.getString("organization") : "";

解决方案:

  经过几次json转换的尝试,发现结果均是如此,所以最后决定采用注入的方式处理。

//提交事件
$("#submitButton").bind("click",function(){
if($("#addForm").valid()){
var jsonStr = {};
$("#itemTable").find("input[lang='userAdd']").each(function(index,obj){
var nameAttr = $(obj).attr("id").trim();
var valueAttr = $('#'+nameAttr).combobox('getValue').trim();
if (valueAttr != "" && valueAttr != undefined) {
jsonStr[valueAttr] = nameAttr;
}
});
var data = JSON.stringify(jsonStr);
var att = {};
att["password"] = $("#text_pwd").val();
att["organization"] = $("#text_organization").combotree("getValue"); $(this).attr("disabled","disabled");
Loading(true,"<s:text name='cems.soft.progress.handling'></s:text>");//遮罩提示
$.doAjax({
url:'${basePath}/user/userAction_userAdd.do',
data:{"data":data,"arrdata":JSON.stringify(att)},
async:true,
success:function(responseText){

  后台:采用注入方式

  private String data;
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
} private String arrdata;
public String getArrdata() {
return arrdata;
}
public void setArrdata(String arrdata) {
this.arrdata = arrdata;
}
/**
* 映射字段
*/
public void userAdd(){
log.info("用户批量导入_PBEG");
this.msg=RESULT_FAIL;
long startTime = System.currentTimeMillis();//获取当前时间
String initPassword = "";
File file = null;
List<User> list = new ArrayList<User>();
List<UserCache> userCaches = new ArrayList<UserCache>();
List<String> failedFailName = new ArrayList<String>();
Organization default_org = null;
try {
//String data = getRequest().getParameter("data");
//String arrdata =getRequest().getParameter("arrdata");
JSONObject jsonData = JSONObject.fromObject(data);
JSONObject jsonArrdata = JSONObject.fromObject(arrdata);
String arrPassword = jsonArrdata.containsKey("password") ? jsonArrdata.getString("password") : "";
String arrOrganization = jsonArrdata.containsKey("organization") ? jsonArrdata.getString("organization") : ""; String excelPath = getServletContext().getRealPath(USEREXCELTEMPLATE_DOWNLOADPATH+USEREXCELTEMPLATE_FILE);
file = new File(excelPath);
if(!file.exists() && !file.isDirectory()){
this.msg = "readErr";
throw new IllegalStateException("用户批量导入-->用户导入临时文件不存在!");
}
List<UserExport> userExports = new ArrayList<UserExport>();

最新文章

  1. 关于python的bottle框架跨域请求报错问题的处理
  2. Html5 简单选择排序演示
  3. (转载)IE6支持透明PNG图片解决方案:DD_belatedPNG.js
  4. PPTP VPN 一键安装包(图文,OpenVZ适用)[zz]
  5. PLSQL_性能优化系列10_Oracle Array数据组优化
  6. 初解DLL基本知识
  7. WPF RadioButton &amp; CheckBox Style
  8. Notification和Activity交互
  9. 鸟哥的LINUX私房菜基础篇第三版 阅读笔记 三 Linux磁盘与文件系统管理
  10. 在QT中引用Shark Machine Learning library
  11. windows系统解决github.com访问超时
  12. Linux指令--traceroute,netstat,ss
  13. logging模块全总结
  14. Codeforces Round #485 (Div. 2) C. Three displays
  15. php 注册树(注册模式)
  16. go语言学习-接口
  17. Jupyter配置步骤
  18. 【MySQL】MySQL存储过程介绍
  19. python中数组与多维数组用法介绍
  20. IDEA使用心得整理

热门文章

  1. hdu 2510 符号三角形 (DFS+打表)
  2. [CQOI2018]异或序列 (莫队,异或前缀和)
  3. VMware DRS概述及功能
  4. 转: listview异步图片加载之优化篇(android)
  5. WCF技术解剖2-TcpTracer路由解析代码
  6. 行为型设计模式之解释器模式(Interpreter)
  7. 培训补坑(day2:割点与桥+强联通分量)
  8. mysql创建用户后无法登陆
  9. xen save/restore 过程
  10. screenshoter 連續截圖工具