2

我有一个用例,我想设置我在会话中保留并添加到 . 我在 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 手册中阅读如何隐式注册表达式解析器,但如何将函数实际添加到 StandardEvaluationContext 对我来说是个谜。

任何帮助表示赞赏

4

1 回答 1

3

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

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

于 2010-06-25T10:16:19.470 回答