/WEB-INF/tags/error.tag
<%@ tag pageEncoding="utf-8" %>
<%@ tag body-content="empty" trimDirectiveWhitespaces="true" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:if test="${not empty errors }">
<c:forEach items="${errors }" var="error" varStatus="L">
<p class="text-danger">${L.count}. ${error }</p>
</c:forEach>
</c:if>
test.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="error" tagdir="/WEB-INF/tags" %>
<error:error/>
<form action="/test" method="post" enctype="multipart/form-data">
<div class="form-group">
<label class="sr-only" for="number1">Number 1</label>
<input type="number" class="form-control" id="number1" placeholder="Number 1" name="number1" value="${number1 }" required>
</div>
<div class="form-group">
<label class="sr-only" for="number2">Number 2</label>
<input type="number" class="form-control" id="number2" placeholder="Number 2" name="number2" value="${number2 }" required>
</div>
<button type="submit" class="btn btn-primary">确认</button>
</form>
BaseController.java
import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
/**
* @author Administrator
*
*/
@Controller
public class BaseController {
static final String ERROR_MESSAGES = "errors";
static RedirectAttributes redirectAttributes;
protected static void addErrorMessage(final String message) {
RedirectAttributes redirectAttributes = getRedirectAttributes();
if (redirectAttributes != null) {
final Map<String, ?> map = redirectAttributes.getFlashAttributes();
if (map.containsKey(ERROR_MESSAGES)) {
final List<String> messages = new ArrayList<String>((List<String>) map.get(ERROR_MESSAGES));
messages.add(message);
redirectAttributes.addFlashAttribute(ERROR_MESSAGES, messages);
} else {
redirectAttributes.addFlashAttribute(ERROR_MESSAGES, Collections.singletonList(message));
}
}
}
public static RedirectAttributes getRedirectAttributes() {
return redirectAttributes;
}
public void setRedirectAttributes(RedirectAttributes redirectAttributes) {
this.redirectAttributes = redirectAttributes;
}
}
TestController.java
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
/**
* @author Administrator
*
*/
@Controller
@RequestMapping(value = "/")
public class TestController extends BaseController {
@RequestMapping(method = RequestMethod.GET)
public String index(final Model model) {
return "test";
}
@RequestMapping(value = "/test", method = RequestMethod.POST)
public String test(final RedirectAttributes redirectAttributes, final Integer number1, final Integer number2) {
super.setRedirectAttributes(redirectAttributes);
if (number1.intValue() > number2.intValue()) {
addErrorMessage("错误:number1应当 <= number2");
return "redirect:/";
}
addErrorMessage("成功!");
return "redirect:/";
}
测试效果