如何在WebFlow中无法正确评估SpEL评估时如何调试?

时间:2018-03-29 14:32:33

标签: spring spring-webflow spring-el

我正在使用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() /等时尝试跟踪逻辑时,我有点迷失。我只能看到它一直评估为假。

1 个答案:

答案 0 :(得分:1)

在使用调试器更仔细地进行操作后,我发现我的scanf()flowScope.challengeName的类型不同。因此Spring在表达式评估中返回错误,因为它们的类型不同。