我在这里使用spring-mvc(3.2.4)和spring-webflow(2.3.2)。 我定义了这样的流程:
<flow>
<decision-state id="check">
<if test="signupFlowAction.checkPrecondition(messageContext)" then="firstState" else="error" />
</decision-state>
<view-state id="firstState">
...
</view-state>
<view-state id="error" view="error/bad-thing-happens">
...
</view-state>
我想在流程启动时检查一些业务前提条件,所以我使用POJO来执行此操作。
public boolean checkPrecondition(MessageContext messageContext) {
boolean oh_snap = true;
if (oh_snap) {
MessageResolver mr1 = new MessageBuilder().fatal().defaultText("fatal message here.").build();
MessageResolver mr2 = new MessageBuilder().error().defaultText("error message here.").build();
MessageResolver mr3 = new MessageBuilder().info().defaultText("info message here.").build();
messageContext.addMessage(mr1);
messageContext.addMessage(mr2);
messageContext.addMessage(mr3);
}
return ! oh_snap;
}
这段代码很好,但我不知道如何在jsp中显示消息。
spring的taglibs不起作用?我试过<spring:error path="*"/>
什么也没发生。
答案 0 :(得分:4)
在JSP
文件中,尝试以下内容:
<c:forEach items="${flowRequestContext.messageContext.allMessages}" var="message">
<li>
Message Source is ${message.source}
<br>
Message Text is ${message.text}
</li>
</c:forEach>
答案 1 :(得分:1)
假设您已经按如下方式指定了Spring Form taglib指令:
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
然后我认为使用errors标记的正确语法是:
<form:errors path="*" />