/** * 获取一个result实例 * * @return 一个不携带任何信息的result实例 */ public static Result me() { return new Result(); }
/** * 是否成功 * * @return */ public boolean isSuccess() { return getOperationState() == OperationState.SUCCESS; }
/** * 创建一个成功结果 * * @return result实例状态为成功无数据携带 */ public static Result success() { return Result.me().setOperationState(OperationState.SUCCESS); }
/** * 创建一个带失败信息的result * * @param reason * 失败原因 * @return result实例 */ public static Result fail(Object... reason) { return Result.me().setOperationState(OperationState.FAIL).setErrors(reason); }
@ResponseBody @ExceptionHandler(ValidationException.class) @ResponseStatus(HttpStatus.BAD_REQUEST) public Result handle(ValidationException exception) { if (exception instanceof ConstraintViolationException) { final List<NutMap> errors = new ArrayList<NutMap>(); final List<String> infos = Lang.list(); Lang.each(((ConstraintViolationException) exception).getConstraintViolations(), new Each<ConstraintViolation>() { @Override public void invoke(int index, ConstraintViolation error, int length) throws ExitLoop, ContinueLoop, LoopException { infos.add(error.getMessage()); errors.add(NutMap.NEW().addv("msg", error.getMessage()).addv("obj", error.getConstraintDescriptor()).addv("arguments", error.getExecutableParameters())); } }); return Result.fail(infos).addData("details", errors); } return Result.fail("参数不正确"); } }
/** * 创建一个异常结果 * * @param e * 异常 * @return 一个异常结果实例,包含参数异常的信息 */ public static Result exception(Exception e) { return Result.exception(e.getMessage()); }
/** * 创建一个异常结果 * * @return 一个异常结果实例,不携带异常信息 */ public static Result exception() { return Result.me().setOperationState(OperationState.EXCEPTION); }
@ResponseBody @ExceptionHandler(MethodArgumentNotValidException.class) @ResponseStatus(HttpStatus.BAD_REQUEST) public Result handle(MethodArgumentNotValidException exception) { final List<NutMap> errors = new ArrayList<NutMap>(); final List<String> infos = Lang.list(); Lang.each(exception.getBindingResult().getAllErrors(), new Each<ObjectError>() { @Override public void invoke(int index, ObjectError error, int length) throws ExitLoop, ContinueLoop, LoopException { infos.add(error.getDefaultMessage()); errors.add(NutMap.NEW() .addv("msg", error.getDefaultMessage()) .addv("obj", error.getObjectName()) .addv("arguments", error.getArguments()) .addv("code", error.getCode()) .addv("codes", error.getCodes())); } }); return Result.fail(infos).addData("details", errors); }