我有一个用例,我想设置一个字段的值,我保留在会话中并添加到。我在flowScope中保留了'myModel'
现在我想设置一个对象myModel的String属性,如果它是空的,所以我想做这样的事情:
<on-render>
<evaluate expression="if empty(flowScope.myModel.name))
flowScope.myModel.name = myModel.suggestName()" />
</on-render>
其中suggestName()是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()
我该怎么做?这是正确的方法吗?我可以在web-flow手册中看到如何隐式注册expressionParser但是如何将该函数实际添加到StandardEvaluationContext对我来说是一个谜。
感谢任何帮助
答案 0 :(得分:3)
您应该能够在String对象上执行方法,因此请尝试flowScope.myModel.name.isEmpty()
或flowScope.myModel.name.length() == 0
如果失败flowScope.myModel.name == ""
会产生同样的效果。