在 WebFlow 中无法正确评估时如何调试 SpEL 评估?
How to debug SpEL evaluation when it doesn't evaluate properly in WebFlow?
我正在使用 Spring WebFlow 2.5.0,但我的 SpEL 表达式未被正确评估。我认为我的 WebFlow 配置或 SpEL 一定有问题,但我不确定是哪一个。
我在登录时有以下决定状态-flow.xml:
<decision-state id="submitChallenge">
<on-entry>
<evaluate expression="authenticationService.respondToChallenge(externalContext.nativeRequest, authRequest)" result="flowScope.challengeName" result-type="org.springframework.webflow.execution.Event"/>
</on-entry>
<if test="flowScope.challengeName == 'success'" then="loginComplete" else="answerChallenge"/>
</decision-state>
然而,即使我的 respondToChallenge()
方法 returns 一个 Event.success(),我也永远不会转换到 loginComplete
状态。测试似乎总是评估为 FALSE。
是我的 SpEL 错了,还是我做 evaluation/test 的方式不对?我如何调试 SpEL 评估以查看发生了什么?
我尝试将调试点放在 org.springframework.binding.expression.spel.SpringELExpression
class 中,但是当我在执行 getValue()
/etc 时尝试跟踪逻辑时,我有点迷路了.我所能看到的是它始终评估为 false。
在使用调试器更仔细地调试之后,我发现我的 flowScope.challengeName
与 success
的类型不同。因此 Spring 在表达式评估中返回 false,因为它们属于不同类型。
我正在使用 Spring WebFlow 2.5.0,但我的 SpEL 表达式未被正确评估。我认为我的 WebFlow 配置或 SpEL 一定有问题,但我不确定是哪一个。
我在登录时有以下决定状态-flow.xml:
<decision-state id="submitChallenge">
<on-entry>
<evaluate expression="authenticationService.respondToChallenge(externalContext.nativeRequest, authRequest)" result="flowScope.challengeName" result-type="org.springframework.webflow.execution.Event"/>
</on-entry>
<if test="flowScope.challengeName == 'success'" then="loginComplete" else="answerChallenge"/>
</decision-state>
然而,即使我的 respondToChallenge()
方法 returns 一个 Event.success(),我也永远不会转换到 loginComplete
状态。测试似乎总是评估为 FALSE。
是我的 SpEL 错了,还是我做 evaluation/test 的方式不对?我如何调试 SpEL 评估以查看发生了什么?
我尝试将调试点放在 org.springframework.binding.expression.spel.SpringELExpression
class 中,但是当我在执行 getValue()
/etc 时尝试跟踪逻辑时,我有点迷路了.我所能看到的是它始终评估为 false。
在使用调试器更仔细地调试之后,我发现我的 flowScope.challengeName
与 success
的类型不同。因此 Spring 在表达式评估中返回 false,因为它们属于不同类型。