тестирование пустой строки с помощью SPEL в spring-webflow 2.1

У меня есть вариант использования, в котором я хочу установить значение поля, которое я сохраняю в сеансе и добавляю в файл . Я сохраняю «мою модель» в 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, для меня загадка.

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


person Hans Westerbeek    schedule 25.06.2010    source источник


Ответы (1)


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

Если это не удастся, flowScope.myModel.name == "" будет иметь тот же эффект.

person Stephen C    schedule 25.06.2010