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