- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个代码可以从用户那里获取数据并验证它是否有效。
验证是针对来自 URL
的数据和来自 JSON
的数据。
问题是,在 URL
的情况下,路径字段包含 arg0
并且它需要我从 中获取它消息
:
@ValidId (message = "The field is invalid")
private Long field;
字段注释。
如果是 JSON
,我可以简单地从 path.substring(path.lastIndexOf('.') + 1)
中获取字段。
即
protected String buildErrorMessage(ConstraintViolation<?> violation) {
String path = violation.getPropertyPath().toString();
String field = path.substring(path.lastIndexOf('.') + 1);
//field = `arg0` in case of url
//field = `field` in case of JSON
}
如果我面临 ConstraintViolation -我如何确定违规是来自 JSON
还是 GET
?
编辑
这是我调用 buildErrorMessage 的地方 -
public class ValidationExceptionMapper implements ExceptionMapper<ValidationException> {
@Override
public Response toResponse(ValidationException exception) {
if (exception instanceof ConstraintViolationException) {
final ConstraintViolationException constraint = (ConstraintViolationException) exception;
for (final ConstraintViolation<?> violation : constraint.getConstraintViolations()) {
String message = buildErrorMessage(violation); //HERE
}
}
最佳答案
以下是一些有助于实现 ExceptionMapper
的步骤检查是否ConstraintViolation
与URL 中发送的无效参数 或JSON 负载中发送的无效属性 相关:
Path
来自 ConstraintViolation
使用 getPropertyPath()
方法;Node
来自属性(property)Path
;Node
亲切地使用 getKind()
方法。请记住参数注释,例如 @QueryParam
, @PathParam
和 @MatrixParam
可以放在方法参数、资源类字段或资源类bean属性中。
我建议您看看我对 ExceptionMapper
的实现对于 ConstraintViolationException
可用 GitHub .
关于java - 如何确定 ConstraintViolation 是来自 JSON 属性还是来自 URL 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50232456/
我有以下代码: UniqueConstraintViolation violation = new UniqueConstraintViolationImpl(); Set violations =
我想我刚刚发现两种不同的 JPA 实现对于约束违规和回滚的工作方式不同。 @Test(expectedExceptions = @@.class) // CVE or RB? public void
我编写了一个由自定义 ConstraintValidator 实现的验证注释。我还想生成非常具体的 ConstraintViolation 对象,这些对象使用在消息插值期间的验证过程中计算的值。 pu
我是使用 Hibernate validator 的新手,显然我只能从 ConstraintViolation 获取错误消息和属性路径。 我想做的是提供更多信息。例如如果我正在测试一个整数的最大值,其
我正在编写一些使用 JSR-303 验证来测试请求对象的服务代码。我想做的是当验证失败时抛出一个自定义的 RuntimeException 包含 Set的ConstraintViolations .
So I want to change the validation messages used to validate a model through a DropWizard resource.
我正在使用 hibernate 4.1.9。我有用户,用户有帐户列表,帐户有交易列表。这是我的 hbm.xml
当我在 py2neo 中尝试 import 语句时出现 ConstraintViolation 错误,但是当我直接在 neo4j 的 shell 中导入时不会出现同样的错误。我在两者中都使用了完全相同
我有一个特定的场景,我只能在流程的稍后时间点手动检查违规情况。 我想做的是抛出一个 ConstraintViolationException,并为其提供一个“真实的”ConstraintViolati
假设我有一个简单的 POJO,如下所示,带有 Jackson 2.1 和 Hibernate Validator 4.3.1 注释: final public class Person { @Js
我似乎无法找到如何使用 Gson 序列化 Hibernate 的约束违规实现。 这是我到目前为止所尝试的。 方法一 MyPojo aPojo = new MyPojo(); Gson gson = n
我有一个代码可以从用户那里获取数据并验证它是否有效。 验证是针对来自 URL 的数据和来自 JSON 的数据。 问题是,在 URL 的情况下,路径字段包含 arg0 并且它需要我从 中获取它消息: @
是否有一些方法(除了 foreach,但好的 foreach 可能就足够了)从自定义 ConstraintValidator 返回来自 validator.valid 的消息? 简单示例(是的,我正在
我正在尝试将我的项目从 Seam 2.2.1.CR2 升级到 2.3.0.Final,但是在这样做时我得到一个: cannot access javax.validation.ConstraintVi
我是一名优秀的程序员,十分优秀!