这篇文章我们来讲Action层:
我们先讲开发步骤:
1:我们要根据Service层里面要传的参数,在Action层传入对应的参数。
Service层是:public void insertGysympl(String usergysid, String ypxxid) throws Exception
2:我们把从页面传入的多个药品类保存起来,且把选中的行号也得到。
3:捕获插入数据时的异常。并根据异常解析是自定义的异常,还是未知异常,做相应的处理。
Action层具体代码如下:
/**
*
* @author Sxq
* @Title: addgysSubmit
* @Description: TODO
* @param @param session
* @param @param indexs 接受页面选中的行序号
* @param @param gysypmlQueryVo页面提交的数据保存在list中
* @param @return
* @param @throws Exception
* @return SubmitResultInfo
* @throws
*/
@RequestMapping("addgysypmlsubmit")
public@ResponseBody SubmitResultInfo addgysSubmit(HttpSession session,int[] indexs,GysypmlQueryVo gysypmlQueryVo)
{
ActiveUser activeUser=(ActiveUser)session.getAttribute(Config.ACTIVEUSER_KEY);//从session中去得到用户保存的信息
String usergysid=activeUser.getSysid();//得到药品供应商的id,
//从前台页面传入的药品类
List<YpxxCustom> list=gysypmlQueryVo.getYpxxCustoms();
int count=indexs.length;//处理数据的总数
int count_success=0;//处理成功的数量
int count_error=0;//处理失败的数量
List<ResultInfo> mess_error=new ArrayList<ResultInfo>();//处理失败的原因 for(int i=0;i<count;i++)
{ ResultInfo resultInfo=null;
YpxxCustom ypxxCustom=list.get(indexs[i]);
String ypid=ypxxCustom.getId();//得到药品的id
try {
gysymplService.insertGysympl(usergysid, ypid);////调用servcie层插入数据。
} catch (Exception e) {
e.printStackTrace();
/*
* 接下来的步骤就是解析我们的异常,看是不是我们自己定义的异常
*/
if(e instanceof ExceptionResultInfo)//判断是不是我们自己定义的异常
{
resultInfo=((ExceptionResultInfo)e).getResultInfo();//是我们自己的异常的话就得到错误信息 }else {
resultInfo=ResultUtil.createFail(Config.MESSAGE, 900, null);//不是我们自己定义的异常,那么就要创建一个未知异常。
} } if(resultInfo==null)//说明没有抛出异常,那么就在代表成功的count_success加1.
{
count_success++;
}else {
count_error++;//说明抛出了异常,那么就要异常加一
mess_error.add(resultInfo);//把异常都收集起来 } } //这里有mess_error所以当我添加失败时会给出具体的失败原因。
return ResultUtil.createSubmitResult(ResultUtil.createSuccess(Config.MESSAGE, 907, new Object[]{count_success,count_error}),mess_error);
}
调试结果:
点击添加药品之后:
点击“确认添加”之后:
前面的是正常添加的情况,接下来我们看一下如果添加那些暂停交易的药品时会出现什么情况(暂停交易的药品是不能被添加进去的):
详细的列出了不能添加的理由。