gpt4 book ai didi

spring - 为什么 initbinder 没有调用提交表单?

转载 作者:行者123 更新时间:2023-12-02 22:51:52 26 4
gpt4 key购买 nike

我有一个表单,但是当我提交它时,我的 initbinder 没有拦截我的 post 请求。这是我的 initbinder:

@InitBinder(value="confermaDto")
protected void initBinderDto(final WebDataBinder binder, final Locale locale) {
binder.registerCustomEditor(MyClass.class, myClassEditor);
}

这是我拦截帖子的方法:

@RequestMapping(value="confermaDati", method = RequestMethod.POST)
public String confermaDati(@Valid final ConfermaDatiAttrezzaturaDto confermaDto,
final BindingResult bindingResult, final Model uiModel, final HttpServletRequest httpServletRequest) {
if (bindingResult.hasErrors()) {
uiModel.addAttribute("message", "Errore Salvataggio");
uiModel.addAttribute("dto", confermaDto);
}
uiModel.asMap().clear();
return "redirect:/";
}

我认为它应该有效,因为 initbinder 中的值和我的模型属性的名称是相等的。那么为什么它不起作用??

谢谢

最佳答案

The names of command/form attributes and/or request parameters that this init-binder method is supposed to apply to.

Default is to apply to all command/form attributes and all request parameters processed by the annotated handler class. Specifying model attribute names or request parameter names here restricts the init-binder method to those specific attributes/parameters, with different init-binder methods typically applying to different groups of attributes or parameters.

以上来自javadoc @InitBinder

在代码中指定要使用的模型属性的名称,即 confermaDto。但是,在您的请求处理方法中,没有模型属性的概念(即没有使用 @ModelAttribute 注释任何内容)。

public String confermaDati(@Valid final ConfermaDatiAttrezzaturaDto confermaDto, final BindingResult bindingResult, final Model uiModel, final HttpServletRequest httpServletRequest) { ... }

你有一个用@Valid注释的参数,它只会触发验证,Spring还将实例化该对象并将请求中的值放入其中,但它NOT指定作为模型属性。在 @Valid 注释旁边添加 @ModelAttribute 注释。 (或者从 @InitBinder 注释中删除该名称,以便始终应用它)。

I think, that it should work because the value in initbinder, and the name of my model attribute are equal. So why don't it work??

简而言之,回答这个问题,方法参数名称相同,但没有模型属性。因此不会触发 @InitBinder 方法。

关于spring - 为什么 initbinder 没有调用提交表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21427494/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com