我们在自己的应用中注册了一个自定义类型转换器,比如FooTypeConverter
,它负责转换为Foo
类型。我们对其他类型的类型转换错误不感兴趣,但如果目标类型Foo
的类型转换失败,我们会希望引发验证错误。我们对String
=> Foo
和Foo
=> String
我知道这可以通过ConversionErrorFieldValidator
来实现,但这意味着要修饰目标字段。有什么方法可以通过一些全局设置实现这一目标吗?
谢谢和最诚挚的问候, ASA
答案 0 :(得分:2)
Nutshell:替换默认的"conversionError"
拦截器,并将其替换为覆盖shouldAddError
的版本,如果值的类型为{{1},则返回true
}。
详细信息:默认拦截器是XWork Foo
的扩展,主要检查值。它还检查特定类型,所以我认为这是最干净的钩子。如果值类型是您感兴趣的值,请覆盖ConversionErrorInterceptor
并返回shouldAddError
。
大致是:
true
您可能希望保留一些价值检查,因此请仔细检查。最好先调用protected boolean shouldAddError(String propertyName, Object value) {
return value instanceOf Foo;
}
,如果返回super.shouldAddError
则进行检查。