Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Как в Velocity избавиться от null-значений?


Автор: kkorsakoff 12.10.2006, 11:41
Дело в том, что если объекта не может быть найден в контексте либо он - null, в результате выводится имя переменной, например $payout.amount

В процессе разработки это очень даже удобно, т.к. позволяет отследить мелкие ошибки вроде опечаток. Но в нормальной работе приложения это не очень хорошоsmile
Есть ли возможность задать какое-то значение "по-умолчанию", например, "N/A".
Ну или хотя бы чтобы просто было пусто smile 

Автор: Stampede 12.10.2006, 12:03
Цитата(kkorsakoff @  12.10.2006,  02:41 Найти цитируемый пост)
Ну или хотя бы чтобы просто было пусто


Да запросто! В том месте, где выводишь значение переменной, пишешь (обращаем внимание на предваряющий восклицательный знак):

Код

[S]!$someVar[/S]
$!someVar


И тогда если переменная с данным именем (someVar) в контексте отсутствует, то выводится пустое место, "". Все это описано в документации.

Автор: kkorsakoff 12.10.2006, 12:39
Спасибо большое, будем знать!  smile 

Сорри, тут не нашел. А где ж еще то...
http://jakarta.apache.org/velocity/docs/user-guide.html

Автор: Stampede 18.10.2006, 10:28
Блин, ступил: конечно же, вот так:
Код

$!someVar


Цитата(kkorsakoff @  12.10.2006,  03:39 Найти цитируемый пост)
Сорри, тут не нашел. А где ж еще то...
http://jakarta.apache.org/velocity/docs/user-guide.html 


Дак все правильно, именно там и есть:

Цитата

 Quiet Reference Notation
When Velocity encounters an undefined reference, its normal behavior is to output the image of the reference. For example, suppose the following reference appears as part of a VTL template.
Код

<input type="text" name="email" value="$email"/>

When the form initially loads, the variable reference $email has no value, but you prefer a blank text field to one with a value of "$email". Using the quiet reference notation circumvents Velocity's normal behavior; instead of using $email in the VTL you would use $!email. So the above example would look like the following:
Код

<input type="text" name="email" value="$!email"/>

Now when the form is initially loaded and $email still has no value, an empty string will be output instead of "$email".

Formal and quiet reference notation can be used together, as demonstrated below.
Код

<input type="text" name="email" value="$!{email}"/> 



И в заключение: я тут как-то обещал рассказать про недостатки и ограничения Velocity. Так вот: не хочу. Ну есть, есть там всякие мелкие и не очень глюки - но, как говаривал незабвенный Велюров: "А кто не пьет?!". В смысле, кто ж без глюка?

На всякий глюк там всегда можно придумать какой-нибудь выверт. Поэтому давайте лучше обсуждать конкретные проблемы и пути их решения. Ну примерно как в этом топике smile

Автор: kkorsakoff 18.10.2006, 19:53
А, извиняюсь плохо смотрел. Хотя специально в качестве последней попытки сделал поиск по "$!". Видимо опечатка вышла у меняsmile

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