场景

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

实现

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

<!-- 添加按钮--><shiro:hasPermission name="partnerAdd"><a href="${ctx}/sys/cooperativePartnersManageAction/toAdd" class="btn btn-green" data-icon="plus" data-toggle="dialog" data-width="800" data-height="400" data-id="dialog-user" data-mask="true">添加</a></shiro:hasPermission><!-- 编辑按钮--><shiro:hasPermission name="partnerEdit">< BR>     <ahref="${ctx}/sys/cooperativePartnersManageAction/toEdit?id={#bjui-selected}" class="btn btn-blue" data-icon="edit" data-toggle="dialog" data-width="800" data-height="400" data-id="dialog-user" data-mask="true">编辑</a></shiro:hasPermission>

三个页面:

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,并跳转到共用的页面。

<c:set var="ctx" value="${pageContext.request.contextPath}" />
<div class="bjui-pageContent"><form action="${ctx}/sys/cooperativePartnersManageAction/doSave" class="pageForm"data-toggle="validate"  autocomplete="off"><input type="hidden" name="op" id="j_dialog_op"value="${param.op}${op}"><input type="hidden" name="id"id="j_dialog_id" value="${partner.id}"><c:if test="${!empty role}"><input type="hidden" name="status" id="j_dialog_op"value="${partner.status}"></c:if><table class="table table-condensed table-hover"><tbody><tr><td colspan="2" align="center" valign="middle"><h4>${title}</h4></td></tr><tr><td><label for="name" class="control-label x90">合作方名称:</label><input class="" id="partnerName" type="text" name="partnerName" data-rule="required;"autocomplete="off" value="${partner.partnerName}" /></td><td><label class="control-label x90">合作方公司名称:</label><input class="" id="companyName" type="text" name="companyName" data-rule="required;"autocomplete="off" value="${partner.companyName}" /></td></tr></tbody></table></form>
</div>
<script></script>
<div class="bjui-pageFooter"><ul><li><button type="button" class="btn-close" data-icon="close">关闭</button></li><li><button type="submit" class="btn-default" data-icon="save">保存</button></li></ul>
</div>

主要功能点;

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

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

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

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

@ResponseBody@RequestMapping(value="/doSave")public Map<String, Object> doSave(SysPartners entity, String op) {Map<String, Object> 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.现在点击主页面的编辑按钮

<!-- 编辑按钮--><shiro:hasPermission name="customerEdit"><a href="${ctx}/sys/sysCustomerAction/toEdit?id={#bjui-selected}" class="btn btn-blue" data-icon="edit" data-toggle="dialog" data-width="800" data-height="400" data-id="dialog-user" data-mask="true">编辑</a></shiro:hasPermission>

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<String, Object> param = new HashMap<String, Object>();//0 表示正常数据param.put("status", "0");param.put("codeType", "contractStatus");//根据参数将相关码表内容查询出来List<SysCode> 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方法。

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

  1. 添加与编辑共用一个jsp页面时,控制按钮的显示与隐藏

    场景 添加与编辑共用一个jsp页面,后台action传过来 op参数,如果是edit则执行编辑,如果是add,则执行添加. 如果是编辑页面则显示充值按钮,如果是添加页面则不显示. 实现 后台actio ...

  2. 解决vue多个路由共用一个页面的问题

    解决vue多个路由共用一个页面的问题 参考文章: (1)解决vue多个路由共用一个页面的问题 (2)https://www.cnblogs.com/bootdo/p/11640844.html (3) ...

  3. Winform中实现新增和更新共用一个页面的示例流程

    场景 Winform中对某个表的数据查询出来,数据放在DataTable中,并将其显示在DataGrdiView中. 点击新增和编辑时打开的是同一个页面. 打开页面加载所有数据并显示 点击新增 点击编 ...

  4. redmine api_使用Redmine API创建可快速添加和编辑任务的页面

    redmine api 最近,我一直在寻找适合自己需求的问题跟踪器,并比较了一些工具,包括Jira,Trello,Asana和Redmine. 你可以在这里阅读. Redmine几乎足够好,但我希望能 ...

  5. HTML5怎么编辑另一个页面,html中嵌套iframe页面 如何将一个html页面中嵌入另一个html页面...

    如何将一个html页面中嵌入另一个html页面 将一个html页面中嵌入另一个html页面需要使用到iframe标签. iframe标签用法: scrolling禁止鼠标滑动,frameborder嵌 ...

  6. 后台系统-新增和编辑共用一个弹框(基于vue和element-ui)

    如图所示: 点击新增角色和编辑会弹出一个弹框,弹框只写一个,如何实现共用同一结构,功能却不相同呢? 首先给这两个按钮定义一个点击事件,事件名为openDialog 这里不同的是 给编辑这个按钮根据作用 ...

  7. BJUI接受TabID实现添加或编辑后自动刷新页面

    场景 借助于BJUI框架,不管是添加还是编辑,都要共用同一个页面,执行同一个save方法. 参照: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/ ...

  8. SSM+BJUI实现CRUD的报表功能

    场景 常见的一种业务就是根据数据库中的单表或者通过关联多表的数据显示在主页面并实现分页.按条件筛选.查看详情 添加记录.编辑记录等. 实现效果 代码实现 查询操作 1.编写action @Contro ...

  9. VB为MSHFlexGrid添加表格编辑功能

    虽然MSHFlexGrid的功能比较强大,样式比较丰富,可惜它不支持数据编辑.我以前俺用TextBox实现了它的编辑功能,总算弥补了MSHFlexGrid的不足. 首先,新建一个标准EXE工程,然后, ...

最新文章

  1. linux/android 脚本相关
  2. mysql 选择字符集 拉丁字符集_mysql的字符集
  3. 远程图片保存到服务器 php,保存远程图片到本地服务器几种方法[php,asp]网
  4. 微型计算机3月2017,2017年3月计算机一级基础及MSOffice习题
  5. HDU 3062 Party(2-sat题模板+tarjan )
  6. RGB转YUV420
  7. Java注释:类、方法和字段注释
  8. 洛谷P1182 数列分段 Section II(二分+贪心)
  9. table-首列冻结
  10. 网络性能应用检测系统
  11. IT人才外包服务的好处?
  12. P4717-[模板]快速莫比乌斯/沃尔什变换(FMT/FWT)
  13. 520评论点赞活动开奖
  14. 打流工具trex使用
  15. 可兼容CS4344的国产音频数模转换电路,目前已广泛应用于数字通信、DVD音频、汽车音响系统
  16. 记一款游戏--《程序员升职记》
  17. Unity中实现赛车游戏
  18. 基础 -- 网络相关单位换算(Mbps,Kbps,MBps等)
  19. 2006年第三季度中国ERP市场规模与市场份额
  20. 程序员高效率工作工具推荐(必备工具)

热门文章

  1. springboot 读取bootStrap.properties流程
  2. JdbcTmplate中的update方法(代码)基础操作
  3. php把int转string,如何在php中实现int转string
  4. pid控制从入门到精通pdf_网络工程师从入门到精通通俗易懂系列 | 访问控制列表ACL原来还可以这样理解,果断收藏!...
  5. php 数组导出csv_php导出CSV抽象类实例
  6. php sprintf %1,PHP sprintf() 函数的应用(定义和用法)
  7. java连接sqlserver2008_java连接sqlserver2008驱动包
  8. linux 中*与?结合起来的威力,匹配一个或者多个
  9. mysql 分钟_mysql分钟到小时和分钟
  10. linux vim卸载安装包_Linux下卸载安装mysql