理论上应该是在service层、但是我个人习惯Action

解决方案 »

  1.   

    习惯性service层,处理业务逻辑,异常或者业务判断肯定也在里面,service抛出一个自定义异常就是
    action去 try  ..catch例:
    如果数据库查到的是空,dao返回的肯定是null,然后service处理业务逻辑时
    if(!agent.getName().equals(pmoAgent.getName())){
    //否,先判断名称是否存在
    PmoAgent exitAgent=new PmoAgent();
    if(getNameExit(pmoAgent.getName(), Integer.parseInt(StatusEnum.ACTIVE_TRUE.getValue()), exitAgent)){
    agent.setName(pmoAgent.getName());
    }else{
    //如果角色名已经存在,抛出异常
    throw new PmoAgentAlreadyExistsException();
    }
    }
    然后action去捕获异常,然后处理给页面信息就是
      

  2.   


    谢谢大牛   能否给个service层和action层的一个方法的例子啊  我看你们项目如何处理的
      

  3.   


    不是给了你service里面对于 业务抛异常的方法了么?   action来try  catch都不会?下面是action的catch,然后将结果返回给页面的处理方式try {
    this.pmoAgentService.updateAgent(pmoAgent, listGou);
    } catch (PmoAgentAlreadyExistsException e) {
    // TODO Auto-generated catch block
    return ajaxDoneError("代理商名称已经存在!");
    }
      

  4.   

    看你怎么理解这个空值咯 ,如果是传入的值为空 肯定在action中啊  如果是去调用了hibernate的hql方法的到值为空,那就要在dao中了  还有键值对什么的 反正看你要看逻辑啦