在spring-webflow 2.1中使用SPEL测试空字符串

时间:2010-06-25 07:53:25

标签: java spring spring-webflow spring-el

我有一个用例,我想设置一个字段的值,我保留在会话中并添加到。我在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对我来说是一个谜。

感谢任何帮助

1 个答案:

答案 0 :(得分:3)

您应该能够在String对象上执行方法,因此请尝试flowScope.myModel.name.isEmpty()flowScope.myModel.name.length() == 0

如果失败flowScope.myModel.name == ""会产生同样的效果。