我正在使用带有JAX-RS服务的hibernate-validator来使用>>> evalState (traverse addNum [1..10]) 0
[1,3,6,10,15,21,28,36,45,55]
验证查询参数:
@NotNull
这可以按预期工作,如果@GET
public Response doSomething(@NotNull @QueryParam("myParam") String myParam) {...}
为ConstraintViolationException
则会引发myParam
。我想提取与违规相关联的参数名称(例如null
),并在响应消息中将其返回给客户端,但似乎没有明显的方法从异常中提取此。有人可以提供一些见解吗?
答案 0 :(得分:1)
从BeanValidation 1.1开始,有一个ParameterNameProvider
合约,它可以配置参数名称提取。正如在另一个答案中所提到的,使用Java 8,您可以在字节代码中获取参数名称,前提是您使用-parameters
标志进行编译。在这种情况下使用ReflectionParameterNameProvider
。但是,即使使用Java 7,您也可以获取参数名称,例如使用ParanamerParameterNameProvider
。此参数名称提供程序基于Paranamer,有多种方法可以设置它。
答案 1 :(得分:0)
这仅适用于使用Java 8的情况,因为在Java 8之前,实际参数名称在编译时丢失了。假设您在Java 8上编译并运行,现在保留它。另请参阅http://docs.jboss.org/hibernate/validator/5.2/reference/en-US/html_single/#_java_8_support