栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在控制器或服务层中的Spring MVC中进行验证?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在控制器或服务层中的Spring MVC中进行验证?

一种常见的方法是在两个地方都进行验证。但是,如果您在谈论@Valid,根据我的经验,最好将其设置为Controllers级别。

这也取决于我们在谈论哪种验证逻辑。假设您有一个bean:

@Datapublic class MyBean {    @NotNull private UUID someId;    @NotEmpty private String someName; }

@Valid
在控制器级别对此bean进行注释是有意义的,因此它甚至无法到达服务。放置
@Valid
service方法没有任何好处,因为为什么您要进一步传播它,而又可以立即在控制器中确定它是否有效。

然后是第二种类型的验证:业务逻辑验证。假设对于同一个bean,someId属性是一个timeUUid,并且它的时间戳最多需要在发生某个事件后2天,否则,该bean应该被服务丢弃。

这似乎是一个业务逻辑验证案例,因为仅查看Bean,您将无法对其进行验证,除非您对其应用了一些逻辑。

由于两种验证方法实际上都验证了不同的事物,因此很明显,您的每个MVC组件(模型,视图和控制器)都进行了自己的验证,并且在不引入对其他组件依赖性的情况下对其验证的内容应该是合理的。

至于向用户显示错误,是的,Errors对象确实旨在用于控制器级别的bean验证,但是您可以设计一些过滤器来捕获任何级别的异常,然后为用户格式化。有很多方法可以解决,而且我
不确定Spring是否规定任何方法都比其他方法更好

根据不同的解析机制(例如jstl或jackson或其他),您 可能倾向于以不同的方式处理验证
。例如,传统的jstl视图解析器可以很好地与使用Errors的组件一起工作,而jackson解析器可能可以结合使用@ResponseBody和一些捕获错误并将其放入响应对象的预定义错误部分的过滤器来更好地工作。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/466400.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号