我们希望在最终用户成功在我们的网站上提交表单后,在信息性消息(Spring RediractAttribute / Flash Message)中添加一个html可点击链接。
所以,结尾会看到以下(flash)消息:
成功
对象已更新。
信息
请记住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>
非常感谢任何有关如何在我们的信息消息中获取可点击链接的友好建议。
答案 0 :(得分:0)
processSubmit需要返回&#34;重定向:/ some-url&#34;或RedirectView
重定向后,您在redirectAttributes中放置的值应该可以在Model参数中使用(或通过@ModelAttributes)。
过程:
获取表格(url = / formA,method = GET)
用户POSTS表单(url = / formA,method = POST)
- 保存/处理表单数据。设置redirectAttributes
- 重定向到某个地方(比如/ formA,或/ formAComplete)