Struts 2: проверка дочерних коллекций с использованием ValidationInterceptor + Visitor - PullRequest
0 голосов
/ 13 января 2011

У меня есть объект модели, который имеет коллекцию дочерних элементов в отношении заголовок-деталь, с заголовком, обработанным в одном классе действий (и форме), и детали, отредактированные в отдельном классе действий (и форме).Я хочу иметь возможность выполнить полную проверку всего графа объектов из заголовка при сохранении объекта заголовка;Я уже объявил посетителя как такового в заголовке -validation.xml: (в этом проекте мы используем проверку XML)

<field name="details">
    <field-validator type="visitor" />
</field>

Класс подробностей также имеет правильную проверку.

Мы также создаем / заранее заполняем этот конкретный граф объектов из другого графа;однако, предварительное заполнение оставит некоторые, например, обязательные поля пустыми.

В результате проверяется только заголовок, поскольку эта форма отправляется при запуске метода save.Можно ли также принудительно проверить детали (через посетителя, которого я объявил), когда на самом деле детали не имеют никаких элементов формы в форме заголовка?

Я хочу оставить это СУХОЙ, а ненеобходимо выполнить явную проверку внутри метода validate () действия заголовка.

1 Ответ

0 голосов
/ 14 января 2011

Часть проблемы заключается в том, что при выполнении проверки Struts видит объект только так, как он был создан из формы.Если список деталей не указан в форме каким-либо образом, проверка XML не сможет увидеть эту информацию для ее проверки.

Одним из возможных решений было бы включение подробной информации вформа через скрытые поля.Вы можете перебрать список и добавить скрытое поле для каждого объекта сведений.Вам, вероятно, понадобится какой-то специальный конвертер данных, если только вам не нужно скрытое поле для каждого элемента данных объекта детализации.

Кроме этого, я не вижу способа сделать это исключительно с помощью проверки XML.

...