【发布时间】:2018-10-18 08:05:33
【问题描述】:
我有一个代码可以从用户那里获取数据并验证它是否有效。
验证来自URL的数据和来自JSON的数据。
问题是在 URL 的情况下,路径字段包含arg0,它需要我从message 中获取:
@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
}
}
【问题讨论】:
-
您可以先尝试从网络浏览器调用该 URL。在您开始在代码中使用它之前,请确保 JSON 是正确的。
-
其实我说的是在普通跑步中发现。不测试。我想看看如何只用代码找出来。
-
您能否分享更多代码并根据您使用的技术标记您的问题?是 Spring MVC 吗? JAX-RS?
-
如 Cassio 建议的那样,如果您想回答您的问题,请添加更多详细信息和适当的重现步骤。
-
@CassioMazzochiMolin 完成。