我们上一篇文章写到了要从editcgd.action为入口讲。我们要做的事根据edicgd.acion进入到Action层的一个函数,在这个函数里面要做的就是从数据库中把采购单表里面的数据都查出来显示在页面上。
这个action中要做的工作是:
1:从系统配置表中把系统的一些信息查出来(比如采购状态用作下拉表),用来修改采购单信息。
2:根据传进来的采购单的id,找出采购单。
3:把采购单加入到Model中,传到页面,显示。
达到的效果是:
来到这个页面:
输入信息,然后点击保存按钮之后。
来到这个页面:
我们可以看到在后面这个页面上把YycgdCusom的对象信息都显示到了页面上。我们接下来就看一下具体怎么实现的。
点击保存之后执行:
window.location='${baseurl}cgd/editcgd.action?id='+yycgdid;
这个yycgdid就是采购单的主键id也就是“年份+序列号”。
我们看editcgd.action:
@RequestMapping("/editcgd")public String edifcgd(Model model,String id) throws Exception{ // 采购状态 Listcgztlist = systemConfigService.findDictinfoByType("011"); List jyztlist = systemConfigService.findDictinfoByType("003"); model.addAttribute("cgztlist", cgztlist); model.addAttribute("jyztlist", jyztlist); // 调用service获取采购单信息 YycgdCustom yycgdCustom = yycdgService.findYycgdById(id); model.addAttribute("yycgd", yycgdCustom); return "/business/cgd/editcgd"; }
我们看到其实就是把YycgdCusom取出来在页面上显示。
-------------------------------------------------------------------------------------------------------------------------------------
重点在于 YycgdCustom yycgdCustom = yycdgService.findYycgdById(id);
我们看这行代码函数:
@Override public YycgdCustom findYycgdById(String id) throws Exception { String year=id.substring(0, 4);//id是2014100054,但是我们只想要年份,所以我们截取2014 YycgdExample yycgdExample=new YycgdExample(); YycgdExample.Criteria criteria=yycgdExample.createCriteria(); criteria.andIdEqualTo(id); yycgdExample.setBusinessyear(year);//因为YycgdExample继承了BussinessBasePo里面有year这个属性 /* * 为什么要用YycgdExample去查呢? * 因为如果用id去查的话那么year这个值就不能传进去了。一旦year这个值传不进去的话,就不能去 * 找到数据库里面的采购单里面的表。 * 所以我们要找到能把year传进去的方法。 * 所以我们要用selectByExample这种方法把YycgdExample这个值传进去。这个类继承了BussinessBasePo * 里面有year这属性 * */ Yycgd yycgd=null; Listyycgdlist=yycgdMapper.selectByExample(yycgdExample); YycgdCustom yycgdCustom=new YycgdCustom(); if(yycgdlist!=null&&yycgdlist.size()==1)//能娶到值的话 { yycgd=yycgdlist.get(0);//把yycgd对象取出来 BeanUtils.copyProperties(yycgd, yycgdCustom);//把yycgd对象里面的值全部复制到yycgdCusom里面 }else //不能取到值的话就报错 { ResultUtil.throwExcepion(ResultUtil.createFail(Config.MESSAGE, 501, null)); } //得到提交的状态,因为我们的页面上要显示的自定义的“提交”“未提交”这样状态。我们要根据zt //系统表里面去查找。 String zt=yycgd.getZt(); String yycgztmc=systemConfigService.findDictinfoByDictcode("010", zt).getInfo(); yycgdCustom.setYycgdztmc(yycgztmc); return yycgdCustom; }
我们看一下editcgd.jsp代码:
<%@ page contentType="text/html; charset=UTF-8"%><%@ include file="/WEB-INF/jsp/base/tag.jsp"%>采购单修改 <%@ include file="/WEB-INF/jsp/base/common_css.jsp"%><%@ include file="/WEB-INF/jsp/base/common_js.jsp"%>
|