繁体   English   中英

具有类名和字段名的Hibernate Validator自定义消息键

[英]Hibernate Validator custom messages key with class name and field name

我一直在尝试为@Controller类中的Spring MVC管理的REST服务添加用于验证错误的自定义消息。

Employee类:

public class Employee {

    @NotNull
    @NotEmpty
    private String company;
    ...
}

我的REST服务:

@ResponseStatus(value = HttpStatus.CREATED)
@RequestMapping(method = RequestMethod.POST)
public void add(@RequestBody @Valid Employee employee) {
    employees.add(employee);
}

并验证错误解析

@ResponseStatus(value = HttpStatus.BAD_REQUEST)
@ExceptionHandler(MethodArgumentNotValidException.class)
public @ResponseBody
List<String> validationExceptions(MethodArgumentNotValidException e) {
    List<String> errors = new ArrayList<String>();

    for (FieldError error : e.getBindingResult().getFieldErrors()) {
        errors.add(error.getDefaultMessage());
    }

    return errors;
}

因此,我将ValidationMessages.properties放在类路径的根目录上,并且无法通过以下键NotEmpty.employee.company获取自定义消息。

我知道有很多方法可以使用ResourceBundle和error.getCode(),甚至可以使用键org.hibernate.validator.constraints.NotEmpty.message ,但是我想要特定对象的特定字段的特定消息。

我也不想使用@NotEmpty(message = "NotEmpty.employee.company}")来做到这一点。 我想要最简单的。

我该怎么办?

您是否尝试过实施自己的

org.springframework.validation.MessageCodesResolver

然后在配置文件中声明您的实现:

<mvc:annotation-driven message-codes-resolver="org.example.YourMessageCodesResolverImpl"/>

我会尝试一下,看来这是一种能够构建自定义错误代码的方法,例如您想要的代码:

String[]    resolveMessageCodes(String errorCode, String objectName, String field, Class<?> fieldType)

我不确定的唯一且重要的事情是它是否将覆盖休眠验证器生成的错误代码...

希望对您有所帮助(并能正常工作)。

干杯,

Chico。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM