13.有效性验证(传智播客)

需求: 修改商品时,对商品的属性进行验证,验证商品的名称字符必须是大于1小于30,商品的价格必须输入。

1.添加依赖

<dependency>
  <groupId>org.hibernate.validator</groupId>
  <artifactId>hibernate-validator</artifactId>
  <version>6.0.7.Final</version>
</dependency>
<dependency>
  <groupId>javax.validation</groupId>
  <artifactId>validation-api</artifactId>
  <version>2.0.1.Final</version>
</dependency>
<dependency>
  <groupId>org.jboss.logging</groupId>
  <artifactId>jboss-logging</artifactId>
  <version>3.3.0.Final</version>
</dependency>

2.在springmvc.xml中配置validator,然后再添加到annotation-driven节点中

<mvc:annotation-driven conversion-service="conversionService" validator="validator"></mvc:annotation-driven>

<!-- 配置校验器 -->
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
   <property name="providerClass" value="org.hibernate.validator.HibernateValidator" />
   <!-- 指定校验使用的资源文件,如果不指定则默认使用classpath下的ValidationMessages.properties -->
</bean>

3.在pojo类中编写校验规则

public class Items {
    private Integer itemId;
    @Size(min=1,max=30,message = "商品名称的长度必须大于1小于30",groups = {Group1.class})
    private String itemName;
    @NotNull(message = "商品价格不能为空",groups = {Group1.class,Group2.class})
    private Long itemPrice;
    private String itemDetail;
    private Date itemCreateDate;
    //get和set方法
}

4.在controller中接受错误信息

//修改商品信息
@RequestMapping(value = "/updateItem")
public ModelAndView updateItem(@RequestParam(value="itemId")Integer item_id, @Validated(value = Group1.class) @ModelAttribute(value="item") ItemsCustom itemsCustom, BindingResult result) throws Exception{
    ModelAndView modelAndView = new ModelAndView();
    //取校验结果
    if (result.hasErrors()) {
        //取出所有的错误信息
        List<ObjectError> allErrors = result.getAllErrors();
        modelAndView.addObject("errors", allErrors);
        modelAndView.setViewName("items/selectItem");
        return modelAndView;
    }

    int rs = itemsService.updateItems(item_id,itemsCustom);
    if(rs == 1) {
        modelAndView.setViewName("items/success");
    }else{
        modelAndView.setViewName("items/failed");
    }
    return modelAndView;
}

5.在页面中显示错误信息

<%--显示错误信息--%>
<ul>
    <c:forEach items="${errors}" var="error">
        <li>${error.defaultMessage}</li>
    </c:forEach>
</ul>

6.测试
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u010286027/article/details/84864261