SpringMVC使用RedirectAttributes实现错误消息处理

/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:/";
    }

测试效果

这里写图片描述
这里写图片描述

这里写图片描述
这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值