热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SSM+BJUI实现添加和编辑共用一个页面

场景SSMBJUI在对记录进行添加或者编辑时可以共用一个jsp页面,然后再进行保存。实现1.主页面添加两个按钮,一个是添加按钮一个是编辑按钮。

场景

SSM+BJUI在对记录进行添加或者编辑时可以共用一个jsp页面,然后再进行保存。


实现

1.主页面添加两个按钮,一个是添加按钮一个是编辑按钮。

添加
     编辑

三个页面:

partnerMain就是当前主页面,带有添加以及编辑的页面。

partnerEditDlg是添加和编辑共用的页面。


添加功能实现

1.现在点击添加按钮,来到对应的action

@RequestMapping(value="/toAdd")public ModelAndView toAdd(){ModelAndView mv = null;try {//业务部分代码省略//传递当前的操作类型的标识,左边是op常量参数,表示操作类型,右边是add常量参数,表示是添加操作mv.addObject(ModelAndViewConstants.OPERATION_KEY,ModelAndViewConstants.OPERATION_VALUE_ADD);//传递到共用页面的标题参数,左边是title常量参数,右边是要显示的标题的内容mv.addObject(ModelAndViewConstants.TITLE_KEY, "添加合作商户信息");//跳转的具体的页面mv.setViewName(ModelAndViewConstants.PARTNER_EDIT_VIEW);LogService.getInstance(this).error("进入合作伙伴添加功能成功:" +ModelAndViewConstants.PARTNER_EDIT_VIEW);}catch(Exception ex) {LogService.getInstance(this).error("进入合作伙伴添加失败:" + ex.getMessage(), ex);mv = new ModelAndView("redirect:/error.jsp");}return mv;}

2.通过上面的action可以传递要执行的操作类型为add,并跳转到共用的页面。
 


${title}





主要功能点;

在共享页面添加隐藏input,来接受传过来的op参数,即操作类型,这里是add

因为是添加所以传过来的实体类partner没有ID等属性,但是要在编辑要用到,所以这里也添加一个hidden。

这里只显示一个字段,其他的省略。

3.点击保存时,BJUI会提交当前form,此form会提交到:${ctx}/sys/cooperativePartnersManageAction/doSave,然后执行保存的操作。

@ResponseBody@RequestMapping(value="/doSave")public Map doSave(SysPartners entity, String op) {Map jsonResult = null;try {//正式业务部分开始//与配置权限管理中相对应,实现添加或编辑完实时更新String tabid = tabid(ModelAndViewConstants.PARTNER_SYS_ID);//如果是测试签约if(entity.getContractStatus()==0) {entity.setTestContractTime(new Date());entity.setContractStatusName("测试签约");}//如果是正式签约if(entity.getContractStatus()==1) {entity.setFormalContractTime(new Date());entity.setContractStatusName("正式签约");}entity.setRecordTime(new Date());//获得当前用户的id和name,加入客户对象中ShiroUser currentUser = (ShiroUser)SecurityUtils.getSubject().getPrincipal();entity.setModifyUserId(currentUser.getUserId());entity.setModifyUserName(currentUser.getAccount());//正式业务部分结束//如果op标志参数为空,或者为add 那么就执行添加操作if (null == op || ModelAndViewConstants.OPERATION_VALUE_ADD.equals(op)) {//此字段表示数据未被更改entity.setStatus("0");//执行插入数据操作,方法是有代码生成工具自动生成int count = this.sysPartnersService.insert(entity);if (count > 0) {LogService.getInstance(this).debug("添加客户信息成功!");}}else {//如果不是,则就是编辑后的保存操作//获取现存数据,也是通过代码生成工具生成的方法SysPartners currentSysPartner = this.sysPartnersService.getByPrimaryKey(entity);int count = this.sysPartnersService.updateByPrimaryKey(entity);if (count > 0) {LogService.getInstance(this).debug("编辑合作商户信息成功!");}}Integer statusCode = 200;String msg = "合作商户信息保存成功";jsonResult = JsonResult.jsonReturn(statusCode, msg, tabid);}catch(Exception ex) {LogService.getInstance(this).error("保存合作商户信息失败:" + ex.getMessage(), ex);String msg =  "保存合作商户信息失败:" + ex.getMessage();jsonResult = JsonResult.jsonReturnErr(msg);}return jsonResult;}

编辑功能实现

1.现在点击主页面的编辑按钮

编辑

2.点击编辑按钮会跳到后台action,并将当前BJUI集成的能获取选中项的ID传过去。

现在来到后台的toEdit

@RequestMapping(value="/toEdit")public ModelAndView toEdit(Integer id) {ModelAndView mv = null;try {//根据ID先查询要编辑的数据SysPartners partner = this.sysPartnersService.getByPrimaryKey(id);//业务部分代码开始//获取签约状态,此处是通过关联码表来实现Map param = new HashMap();//0 表示正常数据param.put("status", "0");param.put("codeType", "contractStatus");//根据参数将相关码表内容查询出来List contractStatus = codeService.getByParam(param);mv = new ModelAndView();//传递签约状态mv.addObject("contractStatus", contractStatus);//业务部分代码结束//传递操作类型,这里是编辑操作mv.addObject(ModelAndViewConstants.OPERATION_KEY,ModelAndViewConstants.OPERATION_VALUE_EDIT);//jsp页面要显示的标题titlemv.addObject(ModelAndViewConstants.TITLE_KEY, "修改合作商户信息");//将查询到的实体Model类传递mv.addObject(ModelAndViewConstants.PARTMER, partner);//跳转到编辑界面mv.setViewName(ModelAndViewConstants.PARTNER_EDIT_VIEW);}catch(Exception ex) {LogService.getInstance(this).error("进入客户编辑失败:" + ex.getMessage(), ex);mv = new ModelAndView(ModelAndViewConstants.ERROR_VIEW);}return mv;}

关键点:

通过传过来的ID获取要编辑的Model实体类的数据,然后执行相应的业务,

关键是通过:

mv.addObject(ModelAndViewConstants.OPERATION_KEY,ModelAndViewConstants.OPERATION_VALUE_EDIT);

来传递操作类型,左边是常量参数op,右边是常量参数edit。

然后传递要显示的标题,传递获取的model数据,跳转到共用的编辑页面。

3.剩余操作与添加功能一样,不过是编辑时将数据传递过去,通过input的value来赋值,如果是添加时value为空所以不显示,如果是编辑则会将传递的数据进行显示,添加与编辑都是执行同一个save方法。

 

 



 


推荐阅读
author-avatar
别他妈给脸不要脸别动老子东西
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有