我想注册一个HandlerMethodArgumentResolver
可以处理以下@Controller
处理程序方法定义的自定义
@RequestMapping(method = RequestMethod.POST)
public String createDomain(@Valid Domain domain, BindingResult errors, @RequestParam("countryId") Long countryId) {
我可以注册我的解析器,这只是创建了一个Domain
通过重写通过请求参数对象,addArgumentResolver()
从WebMvcConfigurerAdapter
。当Spring尝试解析该Domain
参数时,它将遍历其列表HandlerMethodArgumentResolver
(有很多),并选择supports()
它的第一个。
在上面的例子中,虽然我的解析器将被调用,我的Domain
论点将得到初始化,@Valid
注释将不会被处理 ,并
为解析器BindingResult
,一个ErrorsMethodArgumentResolver
是因为它需要一个会失败@ModelAttribute
,@RequestBody
或@RequestPart
在处理方法的说法,这我不没有。
如果我尝试通过添加来修复它 @ModelAttribute
@RequestMapping(method = RequestMethod.POST)
public String createDomain(@Valid @ModelAttribute Domain domain, BindingResult errors, @RequestParam("countryId") Long countryId) {
一HandlerMethodArgumentResolver
实施ModelAttributeMethodProcessor
,将首先与检查supports()
并解决的说法(与@ModelAttribute
和@Valid
我的自定义冲突解决之前)。该BindingResult
不会失败,但我不会对我的自定义创建行为Domain
的实例。
我可以复制粘贴代码以进行验证并将其添加到中的模型中ModelAttributeMethodProcessor
,但是我希望有一种更简单的方法来解析参数并执行验证,而无需在模型中添加对象。有这种方法吗?
很好地描述了您所面对的问题。
我检查了您概述的代码,并得出了相同的结论-没有内置的方法可以同时应用自定义
HandlerMethodArgumentResolver
和@Valid
相关验证,唯一的选择就是执行所述ModelAttributeMethodProcessor
确实这是检查该参数具有@Valid
注释和调用验证逻辑相关的代码。
您可能可以从中派生您的代码HandlerMethodResolverArgumentResolver
,ModelAttributeMethodProcessor
并super.validateIfApplicable(..)
至少以这种方式调用现有代码。
我正试图自己解决参数问题。 我可以很容易地从NativeWebRequest获取输入参数,并将它们分派到相应的自定义@Param注释参数中。 问题是我还想在这方面做一些语法检查/验证。但如果我在“resolveArgument”中抛出异常,则会向用户显示完整的堆栈跟踪。这将是过度和不安全的。我只想向用户返回一条JSON格式的消息,以显示哪个输入参数语法有错误。
在过去的几周里,我一直在努力掌握KeyClope,这样我就可以实现一种使用遗留提供商(基于Oracle,带有会话表和各种奇怪的东西)对用户进行身份验证的方法。我们计划在不久的将来解决这个问题,但目前我们必须解决这个问题,所以我们的想法是在前线使用KeyClope——利用它提供的主要好处,比如SSO——在需要身份验证的应用程序中省略传统的身份验证提供程序。 我读了一些关于构建自定义OIDC身份提供程
表单验证发生在数据验证之后。如果你需要定制化这个过程,有几个不同的地方可以修改,每个地方的目的不一样。表单处理过程中要运行三种类别的验证方法。它们通常在你调用表单的is_valid() 方法时执行。还有其它方法可以触发验证过程(访问errors 属性或直接调用full_clean() ),但是通用情况下不需要。 一般情况下,如果处理的数据有问题,每个类别的验证方法都会引发ValidationErr
问题内容: 我有一个看起来像这样的表格: 它的设置使得输入数据后所有必填字段和“保存”按钮都可以使用。但是,部分验证是,我将使用输入的数据使用$ http通过POST通过服务器访问服务器。 我应该在函数中放置该逻辑还是有一个更好的放置位置? 更新: * 我实现了以下内容,将其作为元素上的属性应用,但它在每次我不喜欢的按键上调用服务器/数据库: 问题答案: 您不需要在指令中发出$ http请求,更好
问题内容: 我需要做一个自定义验证WTForms当输入为:数量:数量 -例如,2:1 所以,我的问题是-如何创建这种验证器? 问题答案: 你可以通过编写方法在表单内编写自定义验证器。如果它引发,则该表格将无效并显示错误。 对于你的特定情况,这是使用正则表达式的解决方案。它找到字符串的匹配项,然后使用一些拆分来取回分数。验证你可以通过访问分数的形式后。
我有一个用Java验证注释注释的模型对象。 根据业务需求,将填充文件名或小时字段,以验证我编写的自定义验证器“CriteriaValidator”。 上面的模型作为方法的输入参数传入,该方法也用@Valid和@ValidCriteria注释。 我的问题是方法中的2个注释。我必须添加@Valid才能检查类中注释的约束。我的自定义验证器仅检查两个字段之一的存在:文件名或小时。 我的问题是,如何使用单个