设想一种情况,如果用户输入的数据不合法,例如年龄字段输入负数或者大于200的数字,这样的数据对于业务来讲是没有意义的[29]。那么可以通过后台进行用户输入的校验,并且通过前台显示提示信息,这里使用了hibernate validator[30]组件。
要想实现此能力,需要修改几个地方,首先,后台的提交接口需要具备可以验证的能力;其次,针对每个字段的验证,需要设置字段规则;最后,前台可以接收验证的结果并且展示出来。优化部分就是保留用户已填内容,避免由于部分内容填写错误而导致所有信息全部重填。
(1)后台接口修改
修改save接口,对前端传入的数据进行验证,并且返回页面和错误信息。修改createuser接口,使前台页面可以正确显示。
在save方法中,通过@Valid注解验证对象数据,通过BindingResult实例返回页面错误信息,并且根据数据是否发生错误返回不同的页面。
(2)数据字段验证规则
设置每个字段的校验规则,输入的字段必须符合校验的要求,否则不能通过。
代码中修改了age字段的类型,由int改为Integer,这样可以避免前台页面默认显示int的初始化数字0,改为Integer后前台没有默认输出内容。
User类中针对每个字段都做了限定,例如设置了年龄的最大/最小值,输入手机号码的长度限制等,其实validator还有很多其他注解可以限定字段校验,见表7-3。
表7-3 validator注解(www.xing528.com)
(3)修改前台显示模板
前台显示模板的修改较为简单,主要是两点,分别是错误信息显示和已填信息的回填。createuser.html文件具体如下。
页面模板在input标签中添加th:field="*{name}",来做已填数据的回填;通过<td th:if="${#fields.hasErrors('name')}"th:errors="*{name}"/>来检测错误信息,如果有错误则显示。
(4)效果展示
现在打开createuser页面,然后任何信息都不填写,点击“创建”,观察页面的变化。如图7-18所示。
现在,这个Spring Boot工程既可以执行基本的业务逻辑,又可以通过前台的限制和后台的校验保证业务的准确,并且人性化地提示了错误的原因。对于后台研发人员来讲,前台的页面部分了解这些已经可以了。
图7-18 输入错误提示
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。