- 修改市场活动
用户在市场活动主页面,选择要修改的市场活动,点击"修改"按钮,弹出修改市场活动的模态窗口;
*每次能且只能修改一条市场活动
*所有者 动态的
*表单验证
*修改成功之后,关闭模态窗口,刷新市场活动列表,保持页号和每页显示条数都不变
*修改失败,提示信息,模态窗口不关闭,列表也不刷新
<button type="button" class="btn btn-default" id="editActivityBtn">
<span class="glyphicon glyphicon-pencil"></span> 修改
</button>
点击修改 给editActivityBtn添加点击事件
事件中: 收集参数 获取列表中被选中的checkbox $("#tBody input[type='checkbox']:checked)
选中个数为0 提示(请选择修改) 选中个数多余1 提示(只能修改一条市场活动)
获取选中checkbox的id 通过id来获取Activity实体类属性值
ajax 请求把数据 id 发送到
url:'workbench/activity/selectActivityById.do' data:{id:id}
编写controller层 根据前端ajax请求传过来的id 调用service层 查询 activity表信息
把activity 以json格式返回给 ajax的 success :function(data){}
@RequestMapping("/workbench/activity/selectActivityById.do")
@ResponseBody
public Object selectActivityById(String id){
//调用service方法 查询市场活动
Activity activity= activityService.selectActivityById(id);
//根据查询结果返回响应信息
return activity;
}
编写mapper层 接口和实现类(动态代理)
Activity selectActivityById(String id);<select id="selectActivityById" resultMap="BaseResultMap" parameterType="string" > select <include refid="Base_Column_List" /> from tbl_activity where id = #{id,jdbcType=CHAR} </select>
编写Service层和实现类
Activity selectActivityById(String id);public Activity selectActivityById(String id) { return activityMapper.selectActivityById(id); }
ajax请求成功 执行success:function(data){}
1.把获取到的data(activity实体类属性)给模态窗口传上 初始值【点击checkbox 修改后 信息初始 显示在修改的模态窗口上 给模态窗口的document元素赋值 data对应的数据值)
2.弹出模态窗口 $("#editActivityModal").modal("show"); 含数据
用户在修改市场活动的模态窗口填写表单,点击"更新"按钮,完成修改市场活动的功能.
<button type="button" class="btn btn-primary" id="saveEditActivityBtn">更新</button>
给更新按钮添加事件
收集模态窗口document元素的属性值
var id=$("#edit-id").val(); var owner=$("#edit-marketActivityOwner").val(); var name=$.trim($("#edit-marketActivityName").val()); var startDate=$("#edit-startTime").val(); var endDate=$("#edit-endTime").val(); var cost=$.trim($("#edit-cost").val()); var description=$.trim($("#edit-description").val());根据属性值进行表单验证
所有者不能为空 名称不能为空 结束日期不能比开始日期小 成本只能为非负整数
//表单验证 if (owner == "") { alert("所有者不能为空"); return; } if (name == "") { alert("名称不能为空"); return; } if (startDate != "" && endDate != "") { //使用字符串的大小代替日期的大小 if (endDate < startDate) { alert("结束日期不能比开始日期小"); return; } } var regExp = /^(([1-9]\d*)|0)$/; if (!regExp.test(cost)) { alert("成本只能为非负整数"); return; }
把数据通过ajax发送到 url:'workbench/activity/saveEditActivity.do'
data:{id:id,owner:owner,name:name ....} 要更新模态窗口的值
//发送请求 $.ajax({ url:'workbench/activity/saveEditActivity.do', data:{ id:id, owner:owner, name:name, startDate:startDate, endDate:endDate, cost:cost, description:description }, type:'post', dataType:'json',
编写Controller层
把更新数据activity保存到数据库 把更新结果 int 封装到 ReturnObject
@RequestMapping("/workbench/activity/saveEditActivity.do") @ResponseBody public Object saveEditActivity(Activity activity,HttpSession session){ //封装参数 User user = (User) session.getAttribute("user"); activity.setEditTime(DateUtils.formateDateTime()); activity.setEditBy(user.getId()); ReturnObject returnObject=new ReturnObject(); try{ int ret=activityService.updateActivity(activity); if (ret==1){ returnObject.setCode("1"); }else { returnObject.setCode("0"); returnObject.setMessage("系统正忙,更新不上"); } }catch (Exception e){ e.printStackTrace(); returnObject.setCode("0"); returnObject.setMessage("系统正忙,更新不上"); } return returnObject; }
更新成功 returnObject.setCode("1")
returnObject.setMessage("***")
以json格式把returnObject返回给ajax的回调函数 success:function(data){}
更新成功 关闭模态窗口 回到市场页面 调用queryActivityByConditionForPage() 保证当前页和当前条数不变 使用反页插件功能 否则更新失败 显示提示信息 模态窗口不变
success:function (data){ if(data.code=="1"){ //关闭模态窗口 $("#editActivityModal").modal("hide"); //刷新市场活动列表 保持页号和每页条数都不变 queryActivityByConditionForPage($("#demo_pag1").bs_pagination('getOption', 'currentPage'), $("#demo_pag1").bs_pagination('getOption', 'rowsPerPage')); }else{ //提示信息 alert(data.message); $("#editActivityModal").modal("show"); } }