我有一个restcontroller
来验证它的输入:
class Item {}
class ItemHolder {
Item item;
}
@RestController
public class ItemRestController {
@GetMapping
public String get(@Valid ItemHolder itemHolder) { }
}
class CannotConvertException extends RuntimeException {}
class ItemConverter implements Converter<String, Item> {
@Override
public Item convert(String value) {
throw new CannotConvertException("Important failure message: " + value);
}
}
@ControllerAdvice
class ResponseExceptionHandler extends ResponseEntityExceptionHandler {
@Override
protected ResponseEntity<Object> handleBindException(
BindException ex, HttpHeaders headers, HttpStatus status, WebRequest request) {
// How to get only the message from CannotConvertException here?
}
在HandleBindException
中,我得到的消息(即ex.getMessage()
)类似于:
org.springframework.validation.BeanPropertyBindingResult:1 errors字段“item”上的对象“item holder”字段错误:拒绝的值[非常糟糕的值];代码[typemismatch.itemholder.item,typemismatch.item,typemismatch.com.example.item,typemismatch];参数[org.springframework.context.support.DefaultMessageSourceResolvable:代码[itemholder.item,item];参数[];默认消息[item]];默认消息[未能将类型“java.lang.String[]”的值转换为必需的类型“com.example.Item”;嵌套异常为org.springframework.core.convert.conversionFailedException:未能将值“very bad value”的[java.lang.String]类型转换为[com.example.Item]类型;嵌套异常为com.example.CanNotConvertException:重要失败消息:very bad value]
如果不使用诸如字符串解析或反射之类的黑客攻击,我将如何确保异常处理程序能够只处理重要失败消息:very bad value
部分,而不会在它之前出现所有噪声?
如果这是一个更好的选择,我可以更换转换器。
尝试抛出MethodArgumentTypeMismatchException
,而不是转换器中的自定义异常,并在建议中添加一个新方法来处理这些类型的异常。
这应该能解决你的问题!
接口说明 获取验证码 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/server/1.0.0/getValidCode 是否需要登录 否 请求字段说明 无 响应字段说明 无 响应成功示例 {} 响应失败示例 {} 响应接受类型 image/jpeg;charset=UTF-8 响应状态码 HTTP状态码 原因 204 N
错误: TypeError:无法读取未定义的LoginForm c:/reactjs/hello-world/src/components/accountbox/LoginForm.js的属性“state”:23 2023 value={this.state.input.email}^24 onchange={this.handlechange}25 class=“form-control”26
接口说明 获取验证码图片 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 如开启https功能,请求地址的协议应改为https,如:https://www.example.com/wish3dearth/api/access/v1.0.0/getLicenseInfo API地址 GET /authcenter/api/verify/v1.0.0/cap
我正在使用axis2。战争在我耳边响起,我正在将我所有的jar打包在APP-INF中,并从axis2/META-INT/Manifest的窗口指向它们。在[类路径]中。我正在使用ws-security。 当我从axis2客户端请求它时,我得到了以下错误。 12:55:05359信息[STDOUT][ERROR]org/opensaml/xml/validation/ValidatingXMLObj
我有一个简单的登录模型类,几乎没有数据注释验证 View是一个部分View,如下所示: 我相信我已经做了验证消息显示所需的所有事情,但它没有,客户端验证也没有。在母版页的头部区域,我还包括了以下脚本 是什么导致了这个问题?解决办法是什么?
我的应用程序中有一个验证,它使用cookies(request.getCookies)来验证验证码。 我想为这个captcha验证创建一个ConstraintValidator,以便它与其他bean的属性一起进行验证——正如JSR-303 bean验证所指定的那样。 有没有办法在ConstraintValidator中检索HttpServletRequest?