当我使用带有POJO动作的spring-webflow时,如何在jsp中显示错误/信息/致命消息?

时间:2013-10-29 03:00:42

标签: spring jsp spring-webflow

我在这里使用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="*"/>什么也没发生。

2 个答案:

答案 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="*" />