Spring MVC验证器(15)

测试结果

在这里插入图片描述

工程结构

工程目录

在这里插入图片描述

添加商品页addgoods.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
<%@taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>添加商品</title>
</head>
<body>
<form:form modelAttribute="goods" action="/goods/save" method="post">
    <fieldset>
        <legend> 添加一件商品 </legend>
        <P>
            <label>商品名:</label>
            <form:input path="gname" />
        </p>
        <p>
            <label>商品详情:</label>
            <form:input path="gdescription" />
        </p>
        <P>
            <label>商品价格:</label>
            <form:input path="gprice" />
        </p>
        <P>
            <label>创建日期:</label>
            <form:input path="gdate" />
            (yyyy-MM-dd)
        </p>
        <p id="buttons">
            <input id="reset" type="reset">
            <input id="submit" type="submit" value="添加">
        </p>
    </fieldset>
    <!-- 取出所有验证错误 -->
    <form:errors path="*" />
</form:form>
</body>
</html>

控制器goodsController

package control;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import pojo.Goods;
import service.GoodsServiceImpl;
import validator.GoodsValidator;

@Controller
@RequestMapping("/goods")
public class GoodsController {
    @Autowired
    private GoodsServiceImpl goodsService;

     GoodsValidator validator = new GoodsValidator();

    @RequestMapping("/input")
    public String input(Model model) {
        // 如果model中没有goods属性,addGoods.jsp会抛出异常
        // 因为表单标签无法找到modelAttribute属性指定的form backing object
        model.addAttribute("goods", new Goods());
        return "addgoods";
    }
    @RequestMapping("/save")
    public String save(@ModelAttribute Goods goods, BindingResult result, Model model) {
        this.validator.validate(goods, result); // 添加验证
        if (result.hasErrors()) {
            return "addgoods";
        }
        goodsService.save(goods);

        model.addAttribute("goodsList", goodsService.getGoods());
        return "showgoods";
    }
}

验证器GoodsValidator

package validator;

import org.springframework.stereotype.Component;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;
import pojo.Goods;

import java.util.Date;
@Component
public class GoodsValidator implements Validator {
    @Override
    public boolean supports(Class<?> clazz) {
        return Goods.class.isAssignableFrom(clazz);
    }

    @Override
    public void validate(Object target, Errors errors) {
        Goods goods = (Goods)target;

        ValidationUtils.rejectIfEmpty(errors,"gname","goods.gname.required");
        ValidationUtils.rejectIfEmpty(errors,"gdescription","goods.gdescription.required");

        if(goods.getGprice()>100 || goods.getGprice()<0){
            errors.rejectValue("gprice","gprice.invalid");
        }

        Date goodsDate  = goods.getGdate();
        if(goodsDate != null && goodsDate.after(new Date())){
            errors.rejectValue("gdate","gdate.invalid");
        }
    }
}

错误提示属性文件errorMessages

goods.gname.required=no name
goods.gdescription.required=no description
gprice.invalid=over 0~100
gdate.invalid=date invalid
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值