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