最近为了准备新工作重新摸出了SSM框架,同时从0学习了JQuery,终于用一周做完了一个包括增删改查的模块(主要是属性太多了,其中一个类50+,复制粘贴耗时)。

从中特意记下了几个遇到的问题,总结一下。

1. 执行网页js代码时, 出现$ is not defined错误。

原因:未引入JQuery,需要在HTML代码中加入以下代码:

<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>

2. 通过Ajax向SSM的后台传递一个Map转JSON的数据时,无法调用方法request.getParameter(name)来获取属性名称。

原因:具体见:https://blog.csdn.net/u010648555/article/details/79084466

将代码做如下修改即可成功:

$.ajax({
url:selectUrl,
type:'POST',
data:dataMap, //而不是JSON.stringify(dataMap)
contentType: "application/x-www-form-urlencoded", //而不是"application/json"
success: function(data) {
if(data.success) {
alert('提交成功!');
} else {
alert('提交失败!' + data.errMsg);
}
}
});

3. 页面输入的中文传到后台变成了乱码。

原因:数据库和网页需要统一utf-8的编码。将问题2中的代码改为以下即可:

contentType: "application/x-www-form-urlencoded; charset=utf-8",

4. 由于有动态、异步插入<option>的需求,同时有“增加新情况”的需求,需要等动态加载完选项后保存下可增项的HTML代码,以便在按下“增加”按钮后添加在页面上。

解决:1. 每当一个<select>加载完后,更新一次可增项的HTML代码。

   2. 使用$.when()方法(http://www.runoob.com/jquery/misc-when.html),如下例子:

//获取html
var addHtml = '';
$.when(getList1(), getList2()).done(function() {
addHtml= '<div class="item">' + $('.item').html() + '</div>';
});
//更新属性1
function getList1() {
var initUrl = '/getattr1';
return getAttrList(initUrl, 'attr1');
} //更新属性2
function getList2() {
var initUrl = '/getattr2';
return getAttrList(initUrl, 'attr2');
} function getAttrList(url, idname) {
return $.getJSON(url, function(data) {
if(data.success) {
var tempHtml = '';
data.info.map(function(attr, index) {
tempHtml += '<option class="text-style" value="' + attr.attrid+ '">' + attr.attrval+ '</option>';
});
$('#' + idname).html(tempHtml);
} else {
     $.toast(data.errMsg);
}
});
}

 5. 前端向后端传递参数时,@RequestBody不能放多个不同的对象。

解决:可以把这些对象封装起来,比如:

public class AllAttrs {
private Attr1 attr1;
private List<Attr2> attr2list;
private List<Attr3> attr3list; //get/set方法略
}
public class AttrController {
@RequestMapping(value = "updateattr", method = RequestMethod.POST)
@ResponseBody
private Map<String, Object> updateAttr(@RequestBody AllAttrs allAttrs) {
Map<String, Object> modelMap = new HashMap<>();
//处理代码略
return modelMap;
}
}

6. 如果更新项有“更新时间”这一属性,且要求“没有更新内容的时候需要特别提示”,update的时候需要注意。

更新时前端不会向后端传递更新时间,如果将更新时间设定为null或者取当前时间,那么update后会返回1,无法判断有没有更新内容。

因此设计SQL的时候,类似这样的属性变量要判断是否为空(加<if>标签),如果不为空才更新这个属性。

7. MyBatis中,保持原值不变,update后返回值不为0。

原因:MyBatis返回的是匹配值而不是影响值,如果需要影响值,在jdbc.properties中需要加上“&useAffectedRows=true”。

最新文章

  1. H5案例分享:使用JS判断客户端、浏览器、操作系统类型
  2. 获取MAC地址的几种方式
  3. tomcat内存溢出 PermGen space
  4. zoj3745 Salary Increasing
  5. js动态设置窗体位置
  6. HTML+CSS+JAVASCRIPT 总结
  7. jsDoc注释的规范
  8. MySql模糊查询like通配符使用详细介绍
  9. 随时可以给doT模板传任何你想要的值
  10. iPhone之Quartz 2D系列--图形上下文(2)(Graphics Contexts)
  11. JQuery焦点Table
  12. VBS调用系统API
  13. 微信支付WxpayAPI_php_v3(二)支付功能开发
  14. Java开发过程中开发工具Eclipse中导入jar包的过程
  15. winform webbrowser如何强制使用ie11内核?
  16. java中this和super关键字的使用
  17. 深入理解Redis系列之SpringBoot集成Redis
  18. StringBuilder and StringBuffer
  19. [转帖]Htop 使用详解
  20. Android--根据子控件的大小自动换行的ViewGroup

热门文章

  1. 解决Spring框架下中文乱码的问题
  2. Mac系统完美配置Cocos2d-x 2.2.3 的Android+IOS双平台环境
  3. TMG 2010 使用脚本来导入URL集和域名集
  4. 3星|《深度思考:不断逼近问题的本质》:香奈儿前CEO自传
  5. 安卓原生与hml交互(WebView基础)
  6. 异步模式:Callbacks, Promises &amp; Async/Await
  7. linux 远程复制文件或文件夹
  8. 死磕salt系列-salt API 使用
  9. sftp协议下如何上传和下载文件
  10. 基于mysql的基准测试