捕获抛出的异常在JSP中进行显示

点击修改的表单提交,控制器从方法中抛出的异常捕捉到异常信息进行显示:

注意:

1)jsp中的<form:errors必须是存在于ModelAttribute标记的类中的字段

2)控制器捕获异常是通过.getCode方法,然后再以switch...case的方式进行捕捉

3)在jsp页面中以<form:error形式接收

控制器:

@RequestMapping("dochangepassword")
public String doChangePassword(HttpSession session, @ModelAttribute("form") ChangePasswordForm form, BindingResult bindingResult) {
    Long fiId = (Long) session.getAttribute(SessionName.FI_ID);
    Long operatorId = (Long) session.getAttribute(SessionName.USER_ID);
    try{
        fiOperatorService.updatePassword(fiId, operatorId, form.getOldPassword(), form.getNewPassword(), operatorId);
    }catch (BusinessException e) {
        switch (e.getCode()) {
            case ModelException.FI_OPERATOR_PASSWORD_NOT_MATCH:
                bindingResult.addError(new FieldError("form", "oldPassword", "操作员口令错误!"));
                return "fi/info/changepassword";
            default:
                throw e;
        }
    }
    return "fi/info/changepasswordsuccess";
}

实现方法:


@Override
@Transactional
public void updatePassword(Long fiId, Long operatorId, String oldPassword, String newPassword, Long executor) {
    FiOperator operator = fiOperatorDao.getByFiAndId(fiId, operatorId);
    if (operator == null) {
        throw new BusinessException(ModelException.FI_OPERATOR_NOT_EXIST, "操作员不存在:operatorId=" + String.valueOf(operatorId));
    }

    //
    StandardPasswordEncoder encoder = new StandardPasswordEncoder(SystemConstant.LOGIN_PASSWORD_ENCODER_SECRET);

    //判断旧口令是否正确
    if (!encoder.matches(oldPassword, operator.getLoginPassword())) {
        throw new BusinessException(ModelException.FI_OPERATOR_PASSWORD_NOT_MATCH, "操作员口令错误:operatorId=" + String.valueOf(operatorId));
    }

    //更新口令
    operator.setLoginPassword(encoder.encode(newPassword));
    operator.setUpdatedBy(executor);
    operator.setUpdatedDateTime(DateTime.now());
    fiOperatorDao.updatePassword(operator);
}

jsp页面:

<form:form name="form" id="form" action="dochangepassword.htm" modelAttribute="form" method="post">
    原口令 </span> <input type="password" id="oldPassword" name="oldPassword"">
   <form:errors path="oldPassword" cssClass="error"></form:errors>




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值