Customizing WebDataBinder initialization
To customize request parameter binding with PropertyEditors, etc. via Spring's WebDataBinder, you can either use @InitBinder-annotated methods within your controller or externalize your configuration by providing a custom WebBindingInitializer.
Customizing data binding with @InitBinder
Annotating controller methods with @InitBinder allows you to configure web data binding directly within your controller class. @InitBinder identifies methods which initialize the WebDataBinder which will be used for populating command and form object arguments of annotated handler methods.
Such init-binder methods support all arguments that @RequestMapping supports, except for command/form objects and corresponding validation result objects. Init-binder methods must not have a return value. Thus, they are usually declared as void. Typical arguments include WebDataBinder in combination with WebRequest or java.util.Locale, allowing code to register context-specific editors.
The following example demonstrates the use of @InitBinder for configuring a CustomDateEditor for all java.util.Date form properties.
@Controller
public class MyFormController {
@InitBinder
public void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
dateFormat.setLenient(false);
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));
}
// ...
}
WebDataBinder是用来绑定请求参数到指定的属性编辑器,可以继承WebBindingInitializer来实现一个全部controller共享的dataBiner
@Component
public class CommonBindingInitializer implements WebBindingInitializer {
public void initBinder(WebDataBinder binder, WebRequest request) {
SimpleDateFormat dateFormat = new SimpleDateFormat(ERPUtil.ISO_DATE_MASK);
dateFormat.setLenient(false);
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
binder.registerCustomEditor(String.class, new StringTrimmerEditor(false));
}
}
也可以在某个单独的contorller里定义一个dataBinder,使用@InitBinder注解就可以实现
PS:WebDataBinder是用来绑定请求参数到指定的属性编辑器.由于前台传到controller里的值是String类型的,当往Model里Set这个值的时候,如果set的这个属性是个对象,Spring就会去找到对应的EDITOR进行转换,然后再SET进去
分享到:
相关推荐
SpringMVC 注解 @InitBinder 解决类型转换问题 在使用 SpringMVC 框架时,经常会遇到表单中的日期字符串和 JavaBean 的 Date 类型的转换问题。 SpringMVC 默认不支持这个格式的转换,因此需要手动配置,自定义数据...
SpringMVC中利用@InitBinder来对页面数据进行解析绑定的方法 本篇文章主要介绍了SpringMVC中利用@InitBinder来对页面数据进行解析绑定的方法,非常具有实用价值,需要的朋友可以参考下。在使用SpringMVC框架的项目...
SpringMVC的@InitBinder参数转换代码实例 本文主要介绍了SpringMVC的@InitBinder参数转换代码实例,通过示例代码详细介绍了@InitBinder的使用方法和原理,对大家的学习或者工作具有一定的参考学习价值。 一、什么...
Spring MVC 使用 @InitBinder 标签对表单数据绑定的方法 Spring MVC 框架中, Bean 中定义了 Date、double 等类型,如果没有做任何处理的话,日期以及 double 都无法绑定。这是因为 Spring MVC 框架中的数据绑定...
Spring MVC InitBinder验证方法详解 InitBinder是Spring MVC中的一种验证方法,它可以对用户提交的数据进行验证,以确保数据的正确性和合法性。在本文中,我们将详细介绍InitBinder验证方法,并提供了一个实用的...
总的来说,SSM自定义参数绑定是通过实现`HandlerMethodArgumentResolver`、使用`@InitBinder`和`@ModelAttribute`注解等方式实现的。这些机制赋予了开发者极大的灵活性,可以根据项目的具体需求定制参数绑定规则,...
百度内部通用XSS攻击解决方案探讨培训ppt 本资源为百度内部通用XSS攻击解决方案探讨培训ppt,主要介绍了百度内部通用XSS攻击解决方案的探讨培训内容。下面是从该资源中提取的知识点: 1. 问题现状:XSS攻击的数量...
本文将深入探讨XSS攻击的原理,以及如何通过Java Spring框架中的InitBinder和自定义StringEscapeEditor类来实现有效的防御措施。 XSS攻击主要分为三种类型:反射型、存储型和DOM型。反射型XSS发生在用户点击含有...
当表单数据不能直接自动绑定到类的属性时,可以使用@InitBinder注解初始化一个数据绑定器,自定义数据转换规则。例如,处理日期类型: ```java @Controller public class MyController { @InitBinder public ...
它通过在控制器类中使用@InitBinder注解来配置Web数据绑定。 WebDataBinder的使用 在使用WebDataBinder之前,需要了解它的工作机制。WebDataBinder是一个用于将Web请求参数绑定到JavaBean的属性上的工具。它可以...
在实际应用中,可能会遇到类型转换的问题,如将用户输入的日期字符串转换为 Date 类型,这时可以使用 @InitBinder 注解和 CustomDateEditor 类进行定制化处理。 - Spring Data JPA:简化了 ORM(对象关系映射),...
`initBinder`方法接收一个`WebDataBinder`参数,然后通过`binder.registerCustomEditor`注册我们的`IntEditor`,这样Spring MVC就能在处理请求时使用这个转换器来处理非布尔类型的`int`值。 接着,我们定义一个处理...
`@ControllerAdvice`可以全局处理验证错误,`@InitBinder`则可以在所有控制器方法调用之前设置数据绑定规则。 - **BindingResult和ModelAttribute**: 在控制器方法中添加`BindingResult`参数,可以获取到验证...
在Spring 3.1之前的版本中,如果需要对特定类型的参数进行格式化或者转换,可以使用`@InitBinder`注解来注册一个自定义的编辑器(`CustomEditor`)或转换器(`Converter`)。下面是一个例子: ```java import org....
public void initBinder(WebDataBinder binder) { binder.registerCustomEditor(CustomType.class, new CustomTypeEditor()); } } ``` ### 7. 数据准备 在处理请求之前,你可以使用`@ModelAttribute`注解的方法...
一种是在XML配置文件中使用`propertyEditorRegistrar`元素,另一种是在Java配置中使用`@InitBinder`注解。 在XML配置中: ```xml <!-- 配置属性 --> ``` 在Java配置中: ```java @Controller public ...
注册自定义属性编辑器可以通过`@InitBinder`注解和`WebDataBinder`的`registerCustomEditor()`方法实现。 参数解析器(HandlerMethodArgumentResolver)则负责解析HTTP请求中的参数,并将其转换为控制器方法的参数...
这里的`@ModelAttribute`注解的参数(如`"account"`和`"user"`)需要与`@InitBinder`中指定的值一致,以确保Spring MVC能够正确地找到对应的数据绑定规则。 总结来说,处理Spring MVC中的同名参数绑定问题,需要...
1. 在Bean定义中使用`@InitBinder`注解和`registerCustomEditor()`方法: ```java @Controller public class MyController { @InitBinder public void initBinder(WebDataBinder binder) { binder....
public void initBinder(DataBinder binder) { binder.setValidator(new UserInfoValidator()); } @RequestMapping(value = "/save", method = RequestMethod.POST) public String save(@Valid UserInfo ...