如何在Spring MVC中捕获/处理类型绑定错误

时间:2015-11-17 15:36:55

标签: spring spring-mvc

假设我的表单字段映射为Integer,Short等,输入无效(非数字)。

我在提交表单时在错误地图中显示以下内容:

Failed to convert property value of type 'java.lang.String' to required type 'java.lang.Short' for property 'property'; nested exception is java.lang.NumberFormatException: For input string: "a" 

我需要显示自定义的,用户友好的消息。这对我不起作用,它永远不会来到这里:

@ExceptionHandler(NumberFormatException.class)
public String handleNumberConversion(NumberFormatException nfe)
{
    return "error.invalidNumberFormat";
}  

BindException也不起作用 - 实际上即使方法签名中的泛型异常也不会被激活。

编辑:第二次尝试:我甚至试过这个,这在我的资源包中也不起作用:

# SpringMVC Error Overrides
typeMismatch.java.lang.NumberFormatException=A NumberFormatException occurred.
typeMismatch.java.lang.Short={0} is an invalid value.
typeMismatch.java.lang.Integer={0} is an invalid value.

,我需要从Binding进程异常中获取一些细节,例如绑定的字段和当前值,因为我的自定义错误消息显示了此信息。

1 个答案:

答案 0 :(得分:1)

您的处理程序方法需要不同的签名:

@ExceptionHandler(BindException.class)
public String handleBindException(BindException be) {
    // extract data from exception...
    return "whatever";
}