0

在最终用户在我们的网站上成功提交表单后,我们希望向信息性消息(Spring RediractAttribute/Flash 消息)添加一个 html 可点击链接。

因此,最后会看到以下(闪存)消息:

成功

对象已更新。

信息

记得编辑属性

其中Edit Attribute将是最终用户浏览器中的可点击链接。

我们很难协调的是代码去哪里创建链接 html 文本?

我们觉得messages.properties 文件中不应该有任何html,我们也不觉得我们的控制器中应该有任何html 生成。

这是我们的控制器代码:

public ModelAndView processSubmit(@Valid ObjectCommand command, BindingResult bindingResult, RedirectAttributes redirectAttributes, HttpServletRequest request) {
    if (bindingResult.hasErrors()) {
        return new ModelAndView("/form.html");
    } else {
        // Command Object successfully send to service to update database as needed.

        // First Flash Message (the success message from above).
        redirectAttributes.addFlashAttribute("successMessage", "Object updated.");

        // Second Flash Message (The informational message from above urging the user to go update something else too.
        String informationMessage = this.getInformationMessage(request, object);
        redirectAttributes.addFlashAttribute("infoMessage", informationMessage);

        return new ModelAndView("redirect:/object.html");
    }
}

private String getInformationMessage(Request request, Object object) {
     // THIS CODE HERE, FEELS SLIMY.
     String editUrl = "Remember to <a href=\"" + request.getContextPath() + "/object/" + object.getIdentifier() + "/attribute.html\" />Edit Attribute</a>";
}

然后这里是我们的jsp标记代码来显示这两个信息消息:

<%@tag body-content="empty"%>
<%@ include file="/WEB-INF/views/html/common/include.jsp" %>
<%@ attribute name="message" required="true" type="java.lang.String" %>

<c:if test="${not empty message}">
    <div class="info_message">
        <div class="title">Information:</div> 
        <div class="body">
            ${message}
        </div>
    </div>
</c:if>

任何关于如何在我们的信息消息中获得可点击链接的友好建议将不胜感激。

4

1 回答 1

0
  1. processSubmit 需要返回 "redirect:/some-url" 或者一个 RedirectView

  2. 重定向后,您在 redirectAttributes 中输入的值应该在 Model 参数(或通过 @ModelAttributes)中可用。

过程:

获取表单 (url=/formA, method=GET)
用户发布表单 (url=/formA, method=POST)
- 保存/处理表单数据。设置 redirectAttributes
- 在某处重定向(例如 /formA 或 /formAComplete)

于 2014-12-11T20:21:03.380 回答