青海旭云网络做网站需要多少钱,商标 做网站 是几类,雅式机械加工网,黄岐网站制作很难想象没有针对用户数据的验证逻辑的Web应用程序。 几乎所有用户的数据都有一些限制#xff0c;例如#xff0c;出生日期应由日#xff0c;月#xff0c;年等组成。SpringMVC拥有自己的数据验证解决方案#xff0c;并且在Validator界面的帮助下可用。 Spring MVC Vali… 很难想象没有针对用户数据的验证逻辑的Web应用程序。 几乎所有用户的数据都有一些限制例如出生日期应由日月年等组成。SpringMVC拥有自己的数据验证解决方案并且在Validator界面的帮助下可用。 Spring MVC Validator的用法 当您从用户那里收到某种数据时及时进行验证是有意义的。 一种明显的方法是使用Web表单。 Validator接口是一种实现整个Spring MVC应用程序验证逻辑的方法。 听起来很有前途。 要开始使用Validator需要做三件事 为某些域模型创建一个验证器类并实现Validator接口。 重载supportClass clazz方法。 重载validateObject targetErrors errors方法。 现在您已经知道Validator接口用法的基础知识。 理论够了让我们继续实践。 Vlidator Spring MVC示例 我想在先前的教程之一中演示Validator接口的实际作用其中的验证不会多余。 我的意思是带有Spring Data的示例应用程序。 首先您需要更新pom.xml文件添加以下依赖项 ...dependencygroupidjavax.validation/groupidartifactidvalidation-api/artifactidversion1.0.0.GA/version/dependencydependencygroupidorg.hibernate/groupidartifactidhibernate-validator/artifactidversion4.3.0.Final/version/dependency
... 在项目中我有一个POJO Entity Table(name shops) public class Shop { Id GeneratedValue private Integer id; private String name; Column(name employees_number) private Integer emplNumber; public Integer getId() { return id; } public void setId(Integer id) { this.id id; } public String getName() { return name; } public void setName(String name) { this.name name; } public Integer getEmplNumber() { return emplNumber; } public void setEmplNumber(Integer emplNumber) { this.emplNumber emplNumber; } } 因此让我们为其创建验证规则 “名称”不能为空。 “ emplNumber”不能为空。 “ emplNumber”不能小于1。 用于这些目的的验证类如下所示 import org.springframework.stereotype.Component;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;import com.spr.model.Shop;Component
public class ShopValidator implements Validator {private final static String EMPLOYEES_NUMBER emplNumber;Overridepublic boolean supports(Class clazz) {return Shop.class.isAssignableFrom(clazz);}Overridepublic void validate(Object target, Errors errors) {Shop shop (Shop) target;Integer emplNumber shop.getEmplNumber();ValidationUtils.rejectIfEmpty(errors, name, shop.name.empty);ValidationUtils.rejectIfEmpty(errors, EMPLOYEES_NUMBER, shop.emplNumber.empty);if (emplNumber ! null emplNumber 1)errors.rejectValue(EMPLOYEES_NUMBER, shop.emplNumber.lessThenOne);}} 注意我将Component注释应用于该类因为我计划稍后将其注入ShopController。 这是验证器方法的说明 supportClass–此验证程序可以验证提供的Class的实例吗 validateObjectorg.springframework.validation.Errors–验证给定的对象并在验证错误的情况下使用给定的Errors对象注册那些对象。 有关更多信息请参见ValidationUtils类的javadoc。 验证期间将显示的消息应放在“ messages.properties”文件中 shop.name.empty The Shop name field cant be empty.
shop.emplNumber.empty The Employees number field cant be empty.
shop.emplNumber.lessThenOne The number of employees cant be less then 1. 让我们转到控制器的代码 ...Autowiredprivate ShopValidator shopValidator;InitBinderprivate void initBinder(WebDataBinder binder) {binder.setValidator(shopValidator);}
...RequestMapping(value/create, methodRequestMethod.POST)public ModelAndView createNewShop(ModelAttribute Valid Shop shop,BindingResult result,final RedirectAttributes redirectAttributes) {if (result.hasErrors())return new ModelAndView(shop-new);ModelAndView mav new ModelAndView();String message New shop shop.getName() was successfully created.;shopService.create(shop);mav.setViewName(redirect:/index.html);redirectAttributes.addFlashAttribute(message, message); return mav; }
... 上面的代码片段演示了在控制器层中需要执行的主要操作以实现验证 验证器的自动装配。 将验证器添加到InitBinder 。 将Valid注释应用于具体控制器中的模型。 最后让我们看一下JSP %taglib urihttp://www.springframework.org/tags/form prefixform%
...
h1New Shop page/h1
form:form methodPOST commandnameshop action${pageContext.request.contextPath}/shop/create.html
table
tbody
tr
tdShop name:/td
tdform:input pathname/form:input/td
tdform:errors pathname cssstylecolor: red;/form:errors/td
/tr
tr
tdEmployees number:/td
tdform:input pathemplNumber/form:input/td
tdform:errors pathemplNumber cssstylecolor: red;/form:errors/td
/tr
tr
tdinput valueCreate typesubmit/td
td/td
td/td
/tr
/tbody
/table
/form:form
... 请注意formerrors标记它们负责显示错误消息。 摘要 Validator接口允许为应用程序中的每个域模型对象创建灵活的验证层。 它是标准JSR-303验证批注例如 Min Max NotNull Size等的不错选择。您可以在GitHub上找到示例的完整版本。 参考 Spring MVC来自Fruzenshtein的便笺博客的JCG合作伙伴 Alexey Zvolinskiy的Validator和InitBinder 。 翻译自: https://www.javacodegeeks.com/2013/06/spring-mvc-validator-and-initbinder.html