Сложная проверка формы Spring с использованием javax.validation

Я пытаюсь выполнить следующее:

Проверьте форму, поддерживаемую bean-компонентом, например, используя следующий класс

public class PersonForm {

    @NotNull
    String name;

    List<Long> interests;

    // This attribute is not filled out in the form
    List<Interest> realInterests;
}

Итак, «имя» и «интересы» происходят из веб-формы. «имя» имеет некоторые ограничения (NotNull), и использование @Valid делает то, что должно делать.

«интересы» — это список идентификаторов интересов.

После начальной проверки «имени» я заполняю коллекцию List.

@CustomValidInterest
public class Interest {

    Long id;
    String name;
    boolean available;

}

Я хочу проверить эту структуру впоследствии. «@CustomValidInterest» — это пользовательская аннотация проверки. Я могу выполнить двухэтапную проверку, используя группы проверки.

Проблема в том, что если какой-то объект «Интересы» недействителен, я хочу связать сообщение об ошибке с полем «Интересы» (Список‹ Длинный> тип), поэтому, когда я получаю ошибки формы, ошибка связана с правильным полем.

Может быть, я пытаюсь использовать проверку неправильно. Я пытался избежать кучи программных сравнений, которые заполняли ошибки вручную.


person Hartimer    schedule 22.10.2012    source источник


Ответы (1)


Отвечая на мой собственный вопрос, это достижимо с помощью PropertyEditors. Форма может возвращать List‹ Long >, но объект формы может иметь только List‹ Interest >, который создается с использованием указанного преобразователя свойств. После этого @Valid в этом списке должен проверять любые ограничения, которые накладывает «Интерес».

person Hartimer    schedule 22.10.2012