тестирование на пустую строку с SPEL в spring-webflow 2.1 - PullRequest
2 голосов
/ 25 июня 2010

У меня есть сценарий использования, в котором я хочу установить значение поля, которое я храню в сеансе и добавило в.Я сохраняю 'myModel' в flowScope

Теперь я хотел бы установить свойство String объекта myModel, если оно пустое, поэтому я хочу сделать что-то вроде этого:

<on-render>
    <evaluate expression="if empty(flowScope.myModel.name)) 
           flowScope.myModel.name = myModel.suggestName()" />
</on-render>

, где offerName() - это метод экземпляра класса myModel, который возвращает строку. SPEL сообщает мне следующее при оценке выражения:

EL1041E:(pos 3): After parsing a valid expression,
there is still more data in the expression: 'empty'

Так что я полагаю, что SPEL не знает функцию «пустой», как стандартный ELделает (например, проверяет наличие пустой строки)

В руководстве к пружине (6.5.9 Функции) я прочитал, что могу зарегистрировать свои собственные функции.Таким образом, я мог бы зарегистрировать функцию emptyString и делегировать ее StringUtils.isEmpty ()

Как бы я это сделал?Это правильный подход?Я могу прочитать в руководстве по веб-потоку, как неявно зарегистрировать expressionParser, но как на самом деле добавить функцию в StandardEvaluationContext для меня загадка.

Любая помощь приветствуется

1 Ответ

3 голосов
/ 25 июня 2010

Вы должны иметь возможность выполнять методы для объекта String, поэтому попробуйте flowScope.myModel.name.isEmpty() или flowScope.myModel.name.length() == 0

В случае неудачи flowScope.myModel.name == "" будет иметь такой же эффект.

...