我正在实施忘记密码流程。挑战阶段将询问三个先前已回答的问题,如果它们是正确的,则继续。但是,如果它们不正确,我想回到此次挑战表单,并显示一条错误消息,指出答案不正确。基本上,我想要这样的东西:
<view-state id="challengeForm" view="forgotPasswordChallengeView" model="challenge">
<binder>
<!-- http://stackoverflow.com/questions/10338472/debugging-spring-mvc-collection-binding -->
<binding property="questionAndAnswerList[0].answer.answer" />
<binding property="questionAndAnswerList[1].answer.answer" />
<binding property="questionAndAnswerList[2].answer.answer" />
</binder>
<on-entry>
<set name="viewScope.commandName" value="'challenge'" />
</on-entry>
<transition on="submit" bind="true" validate="true" to="checkChallenge" />
</view-state>
<action-state id="checkChallenge">
<evaluate expression="userManager.challengePasses( challange )" />
<transition on="true" to="resetPassword" />
<transition on="false" to="challengeForm">
<!-- ADD MESSAGE HERE -->
<evaluate expression="messageContext.addMessage( ... )" />
</transition>
</action-state>
...
正如我现在所看到的,我有3种可能的解决方案:
所以,我要问的是:有没有一种干净的方法可以直接在流XML中向messageContext
添加消息?
答案 0 :(得分:1)
我过去也有过这个问题。 “验证”的语义含义是什么?验证器中的内容是什么?我最终决定这种类型的操作不应该是验证器的一部分。我已经使用选项3来处理类似于你的情况,但我同意这似乎有些过分。选项2并不理想,因为方法名称challengePasses
并不表示它会添加错误消息,而'challengePassesAddedErrorIfNot`会有点荒谬。