我正在使用Spring WebFlow 2.5.0,但我的SpEL表达式未正确评估。我想我的WebFlow配置或SpEL一定做错了,不过我不知道哪个。
我的login-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()
方法返回Event.success(),我也从未转换到loginComplete
状态。测试似乎总是评估为FALSE。
我的SpEL是错误的,还是我正在进行评估/测试的方式?如何调试SpEL评估以查看发生的情况?
我试图将调试点放在org.springframework.binding.expression.spel.SpringELExpression
类中,但是当我在执行getValue()
/等时尝试跟踪逻辑时,我有点迷失。我只能看到它一直评估为假。
答案 0 :(得分:1)
在使用调试器更仔细地进行操作后,我发现我的scanf()
与flowScope.challengeName
的类型不同。因此Spring在表达式评估中返回错误,因为它们的类型不同。