#java #bean-validation #hibernate-validator #spring-validator
Вопрос:
Я создаю библиотеку, и у меня есть POJO, как в примере ниже. В POJO есть несколько карт, позволяющих клиентам передавать пользовательские свойства, которые они могут использовать на стороне сервера. Я хотел бы добавить ограничения проверки для известных полей и предоставить клиентам возможность добавлять проверку для полей на картах.
Я могу проверить POJO с помощью валидатора hibernate bean. Я ищу способы обеспечения проверки карт таким образом, чтобы клиенты могли их переопределить. Я просматривал документацию по гибернации, но она мне не очень понятна.
При использовании этой библиотеки (обычно в приложении spring) каждое развертывание может отправлять свои собственные пары значений ключей для каждой карты. Я могу позволить им зарегистрировать свой собственный валидатор для каждой карты в своем приложении, или я могу запустить его через какой-нибудь файл конфигурации, где они могут перечислить список возможных ключей и значений для каждой карты. Клиенты могут знать POJO, которое они хотят использовать для каждой карты, если это может привести к более чистому решению.
Карта может содержать в основном примитивные типы данных (например, строковые, логические, целочисленные и т. Д.). В идеале я хотел бы также поддерживать пользовательские объекты. Любые указания будут оценены по достоинству.
class Example {
private One one;
private Two two;
}
class One {
private Eleven eleven;
private Twelve twelve;
}
private Eleven {
private Map<String, Object> attributes = new HashMap<String, Object>();
}
private Twelve {
@NotBlank(message = "id should not be blank")
private String id;
@Min(value = 0, message = "Count should not be less than 0")
private int count;
private Map<String, Object> attributes = new HashMap<String, Object>();
}
private Two {
@NotBlank(message = "id should not be blank")
private String id;
@Email(message = "Email should be valid")
private String email;
}
Комментарии:
1. Чего именно вы пытаетесь достичь? Вы хотите, чтобы сами карты были проверены (например, чтобы они не были пустыми или содержали не более 5 отображений)? Вы хотите, чтобы ключи были проверены (например, каждый ключ является допустимым идентификатором Java)? Значения (например, все они являются будущими датами)? Сочетание всего вышеперечисленного? И что вы имеете в виду, настраивая валидаторы на основе конфигурации, например, хотите ли вы прочитать правила из какого-либо внешнего файла свойств или достаточно аннотации пользовательской проверки? Конкретный пример ваших потребностей мог бы помочь.
2. @NikosParaskevopoulos Я уточнил вопрос с помощью информации, которую вы просили. Теперь все ясно ?
3. Привет @srini, теперь все намного яснее. Моей первой попыткой приблизиться к решению был бы пользовательский валидатор (там много ресурсов ). Логика этого валидатора будет настраиваться в соответствии с клиентом — здесь тоже много опций, первым делом я прочитаю файл свойств статической конфигурации (самый простой). Если бы вы могли привести конкретный, упрощенный пример фактического варианта использования, кто-нибудь мог бы предложить более конкретное решение.