簡體   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