Spring数据校验

maoxiongyi 9年前

1.在servelet中添加校验引用
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="/WEB-INF/messages" /> <property name="cacheSeconds" value="0" /> </bean>
表示在"/WEB-INF/messages"目录下存储校验信息

2.在实体类中设置校验
     /**item_name */   
     @Length(min = 1, max = 30)
    private String item_name;//对长度校验
    /**price */
    @NotNull//非空校验
    @Min(1)//最小值
    @Max(9999999999L)//最大值
    private Long price;
    /**genre_id_1 */
    @Pattern(regexp = "([1-9]{1,6})")//正则表达式
    private String genre_id_1;

3.编写jsp文件
添加标签引用:
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
添加校验:
<form:form modelAttribute="itemForm" action="/minimall/itemRegister.do" method="post">
<table border="0">
<tr>
<td>商品名</td>
<td>
<input type="text" name="item_name" value="${itemForm.item_name }" >
<form:errors path="item_name" />
</td>
</tr>  
</table>
</form:form>

4.编写校验信息messages.properties
typeMismatch.itemForm.price=数字を入力してください

NotNull.itemForm.price=販売価格を入力してください

Length.itemForm.item_name=商品名の長さは1~30の間にあります

Min.itemForm.price=販売価格は1より大きいです

Max.itemForm.price=販売価格は9999999999より小きいです

Pattern.itemForm.genre_id_4=全部分類を選択してください

备注:Length与2中对应,itemForm与3中对应,item_name与2中对应

5.编写controller层
    @RequestMapping(value = "/itemRegister.do", method = RequestMethod.POST)
    public ModelAndView doItemRegister(HttpServletRequest request, @Valid @ModelAttribute("itemForm") ItemForm itemForm, BindingResult bindingResult) {
        ItemForm sitemForm = this.sanitizing(itemForm);

        if (bindingResult.hasErrors()) {
            return new ModelAndView("/item_info_input", "itemForm", itemForm);
        } else {
            if (itemService.register(sitemForm)) {
                return new ModelAndView("/item_info_confirm", "itemForm", itemForm);
            } else {
                return new ModelAndView("/registerFailed");
            }
        }
    }