Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Spring Valang валидатор


Автор: Entwickler 28.12.2011, 12:21
Всем привет,

есть веб приложение, в котором нужно проверить значение [consulting.wishFee.fee]. Если 0 то одино сообшение, типо цена не может быть 0, если пусто то другое, а если NumberFormat не корректен, то третее... так вот "пусто" и "numberformat" exception типо е5 отлавливает, а вот равенство с 0 нет. Формат данных: 0,00. Приложение на Spring + Spring Web Flow.

Валидатор прописан так:
Код

<bean id="beratungValidator" class="org.springmodules.validation.valang.ValangValidator">
            <property name="customFunctions">
                <map>
                    <entry key="customAdd" value="de.proactiv.pbv.icf.core.spring.validation.CustomAddFunction" />
                </map>
            </property>
                <property name="valang">
                    <value>
                <![CDATA[
                        { incuredPerson.person.birthday: (? is not null) : '' : 'required' }
                        { incuredPerson.person.birthday : (? is null OR ? <= [T]) : '' : 'typeMismatch' }
                        { consulting.incurenceExistent : (? is not null) : '' : 'required' }
                        { consulting.wishFee.fee : (? == 0) : '' : 'tooSmall' }
                        { consulting.wishFee.fee : (? has text and consulting.wishFee.fee > 0) : '' : 'required' }
                .................


так вот "оно" выдаёт мне два месседжа если 0, и tooSmall и required.... нигде что то не могу найти нормальное описание синтаксу...

заранее спасибо за советы : - )

Автор: Nofate 28.12.2011, 12:31
Код

{ consulting.incurenceExistent : (? is not null) : '' : 'required' }
{ consulting.wishFee.fee : (? == 0) : '' : 'tooSmall' }


Логично. 0 не является null-ом (0 is not null).  Поэтому оба условия срабатывают. Наверное, в первом случае вам стоит (? is not null) заменить на (? is null) по смыслу.

PS. valang первый раз вижу, все рассуждения сугубо аналитические. )

PPS. Синтаксис разжеван http://springbyexample.org/examples/spring-modules-validation-module.html.

Автор: Entwickler 28.12.2011, 13:05
а я и не знал что 0 это не NULL : - )

теперь серьёзно, меня интерессуют поля consulting.wishFee.fee а не другие... там я проверяю на 0 а не NULL...

Автор: Entwickler 28.12.2011, 13:22
Решил таким образом:

Код

...

{ consulting.wishFee.fee : (? is not null) : '' : 'required' }
{ consulting.wishFee.fee : (? is null or consulting.wishFee.fee > 0) : '' : 'tooSmall' }
...


Работает так:

1] отказывает в выполнении только если "НОЛЬ" (пусто)
2] отказывпет в выполнении только если НЕ "НОЛЬ" (пусто) и меньше 0

Немного гемарные у них "assertions"

Всем ПОКА!!! : - )

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)