Проверка списка Struts2 - PullRequest
       15

Проверка списка Struts2

1 голос
/ 19 января 2012

Я пытаюсь проверить список объектов в Struts2.

Предположим, у вас есть класс с именем INVOICE.Он имеет 3 свойства с именем: product, quantity, price

И у меня есть список INVOICE с именем INVOICES.

. В файле jsp, если вы выполните итерацию по списку, он сгенерирует этивходные данные.

invoices[0].product
invoices[0].quantity
invoices[0].price
invoices[1].product
invoices[1].quantity
invoices[1].price 

Теперь после отправки мне нужно проверить эти значения.

Как видите, Struts2 больше не поддерживает проверку коллекции.http://www.opensymphony.com/webwork/api/com/opensymphony/xwork/validator/validators/CollectionFieldValidator.html

Я нашел способ сделать это с помощью аннотаций.Что-то вроде

@RequiredStringValidator(message="Product name is required")
public void setProduct(String product) {
    this.product = product;
}

Но мне не разрешено помещать аннотации проверки на класс бина из-за стандарта кодирования проекта.Потому что мне нужно сохранить СООБЩЕНИЯ в файле свойств.

Я прочитал, что могу выполнить эту проверку с VisitorValidation, как упомянуто здесь.http://struts.apache.org/2.0.11.2/docs/using-visitor-field-validator.html

Но я не мог понять, как это сделать, увидев эти примеры.

Есть ли способ сделать это с использованием только проверочных XML-файлов?Спасибо

ОТВЕТ:

Я сделал это с VisitorFieldValidator, и у меня все еще были проблемы, когда я комментировал правильный ответ.

Проблема ушлакогда я добавляю MyModel-validation.xml в пакет моей модели.

. Как правильно выделил ответ:

управляйте вашими проверками для ваших моделей в одном месте, где они находятся, рядом с вашей моделью.классы.

1 Ответ

2 голосов
/ 19 января 2012

Действительно, проверка поля посетителя будет вашей ставкой. Документация Struts2 не известна как наиболее полная, но вы можете получить больше информации о валидаторе поля посетителя здесь , который включает в себя простой пример.

VisitorFieldValidator позволяет вам перенаправлять валидацию в свойства объекта вашего действия, используя собственные файлы валидации объекта. Это позволяет вам использовать шаблон разработки ModelDriven и управлять проверками для ваших моделей в одном месте, где они находятся, рядом с вашими классами моделей . VisitorFieldValidator может обрабатывать как простые свойства объекта, наборы объектов , так и массивы.

В своем действии вы можете поместить проверку для коллекции invoices как:

<validators>
    <field name="invoices">
        <field-validator type="visitor">
            <message></message>
        </field-validator>
    </field>
</validators>

Затем просто перейдите к созданию Invoice-validation.xml, который будет содержать логику проверки для вашего бина Invoice, и поместите его вместе с классом Invoice. Например:

<validators>
    <field name="product">
        <field-validator type="requiredstring">
            <message>product is required.</message>
        </field-validator>
    </field>
</validators>
...