Проблема Spring / Webflow с проверкой - PullRequest
2 голосов
/ 04 июля 2011

Проблема с проверкой

Я бы запустил проверку, когда метод "зарегистрирован"

В веб-потоке: ...

<transition on="registered" to="registeredAction" bind="true" validate="true" />

...

Моя модель выглядит так:

class User {
private String name;
private String surname;
...
private List <address> addresses;
...
public void validateRegistered (ValidationContext context) {
Context.getMessageContext MessageContext messages = ();

if (name == null) {
messages.addMessage (new MessageBuilder (.) error (). source ("name".) code (MessageCodes.Error.REQUIRED.) build ());
}
}

В адресном классе

Class Address {

private String street;
private String city;

public void validateRegistered (ValidationContext context) {
Context.getMessageContext MessageContext messages = ();

if (street == null) {
messages.addMessage (new MessageBuilder (.) error (). source ("street".) code (MessageCodes.Error.REQUIRED.) build ());
}
}

Выполнение действия и получение ошибок в валидаторе для класса User, но не для Address Class

Кто-нибудь знает, почему это так?

Ответы [ 2 ]

5 голосов
/ 04 июля 2011

Spring будет вызывать валидацию только для бина, установленного в качестве модели для состояния просмотра.

Следующее будет валидировать только user:

<view-state id="something" view="something.jsp" model="user">
    <transition on="registered" to="registeredAction" bind="true" validate="true" />
</view-state>

Вам потребуетсясоздайте объект, который инкапсулирует пользователя и адрес, и используйте его как модель (и вызовите метод проверки User и Address в его методе проверки).

0 голосов
/ 12 августа 2014

Другой ответ верен в том, что WebFlow проверяет только один объект модели, однако вам не нужно создавать другой объект.Вы можете сделать вложенную проверку.Просто позвоните в адресный валидатор внутри вашего User validator.Как только вы попадаете в свою процедуру валидатора, вы можете прыгать вокруг и делать практически все, что вам нужно.

...