设置@ResponseCode抛出的HTTP ResponseCode的状态代码消息注释异常

时间:2011-09-26 12:35:46

标签: spring spring-mvc

我目前正在尝试设置由@ResponseCode带注释的异常抛出的HTTP状态代码的消息。 我已经定义了例外:

@ResponseStatus(value = HttpStatus.BAD_REQUEST)
public final class BadRequestException extends IllegalArgumentException {
/**
 * The serial version UID.
 */
private static final long   serialVersionUID    = -6121234578480284282L;

public BadRequestException() {
    super();
}

public BadRequestException(String message, Throwable cause) {
    super(message, cause);
}

public BadRequestException(String message) {
    super(message);
}

public BadRequestException(Throwable cause) {
    super(cause);
}

}

如果抛出异常,我会在@ExceptionHandler注释方法中再次抛出它:

@ExceptionHandler(RuntimeException.class)
public String handleRuntimeException(Exception e, HttpSession session) {
        if (e instanceof BadRequestException) {
            throw (BadRequestException)e;
        }
        return FAILURE;
    }

我通常会以这种方式抛出此异常:

if (result.hasErrors()) {
  throw new BadRequestException("Bad Request Message.");
}

HTTP状态代码始终仅返回“HTTP状态400 - ”而未设置消息。

THX!

1 个答案:

答案 0 :(得分:1)

使用@ResponseStatus注释您的异常处理程序。然后创建一个基本的错误/异常视图,并将异常堆栈跟踪或其他任何内容传递给该视图