`
yeak2001
  • 浏览: 102784 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

@InitBinder

阅读更多
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进去
分享到:
评论
2 楼 yeak2001 2012-06-27  
傲视温柔 写道
请问一下
@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)); 
    } 

直接写完这个类就可以绑定数据了吗 , 我这里不行啊,老报错,是不是在其他地方还得有点配置或者操作什么的


<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="webBindingInitializer" ref="commonBindingInitializer" />
</bean>
1 楼 傲视温柔 2012-05-30  
请问一下
@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)); 
    } 

直接写完这个类就可以绑定数据了吗 , 我这里不行啊,老报错,是不是在其他地方还得有点配置或者操作什么的

相关推荐

    详解SpringMVC注解@initbinder解决类型转换问题

    SpringMVC 注解 @InitBinder 解决类型转换问题 在使用 SpringMVC 框架时,经常会遇到表单中的日期字符串和 JavaBean 的 Date 类型的转换问题。 SpringMVC 默认不支持这个格式的转换,因此需要手动配置,自定义数据...

    SpringMVC中利用@InitBinder来对页面数据进行解析绑定的方法

    SpringMVC中利用@InitBinder来对页面数据进行解析绑定的方法 本篇文章主要介绍了SpringMVC中利用@InitBinder来对页面数据进行解析绑定的方法,非常具有实用价值,需要的朋友可以参考下。在使用SpringMVC框架的项目...

    SpringMVC的@InitBinder参数转换代码实例

    SpringMVC的@InitBinder参数转换代码实例 本文主要介绍了SpringMVC的@InitBinder参数转换代码实例,通过示例代码详细介绍了@InitBinder的使用方法和原理,对大家的学习或者工作具有一定的参考学习价值。 一、什么...

    spring mvc使用@InitBinder标签对表单数据绑定的方法

    Spring MVC 使用 @InitBinder 标签对表单数据绑定的方法 Spring MVC 框架中, Bean 中定义了 Date、double 等类型,如果没有做任何处理的话,日期以及 double 都无法绑定。这是因为 Spring MVC 框架中的数据绑定...

    Spring MVC InitBinder验证方法

    Spring MVC InitBinder验证方法详解 InitBinder是Spring MVC中的一种验证方法,它可以对用户提交的数据进行验证,以确保数据的正确性和合法性。在本文中,我们将详细介绍InitBinder验证方法,并提供了一个实用的...

    SSM自定义参数绑定

    总的来说,SSM自定义参数绑定是通过实现`HandlerMethodArgumentResolver`、使用`@InitBinder`和`@ModelAttribute`注解等方式实现的。这些机制赋予了开发者极大的灵活性,可以根据项目的具体需求定制参数绑定规则,...

    百度内部通用XSS攻击解决方案探讨培训ppt

    百度内部通用XSS攻击解决方案探讨培训ppt 本资源为百度内部通用XSS攻击解决方案探讨培训ppt,主要介绍了百度内部通用XSS攻击解决方案的探讨培训内容。下面是从该资源中提取的知识点: 1. 问题现状:XSS攻击的数量...

    XSS防攻击实现

    本文将深入探讨XSS攻击的原理,以及如何通过Java Spring框架中的InitBinder和自定义StringEscapeEditor类来实现有效的防御措施。 XSS攻击主要分为三种类型:反射型、存储型和DOM型。反射型XSS发生在用户点击含有...

    spring3.0注解

    当表单数据不能直接自动绑定到类的属性时,可以使用@InitBinder注解初始化一个数据绑定器,自定义数据转换规则。例如,处理日期类型: ```java @Controller public class MyController { @InitBinder public ...

    Spring中WebDataBinder使用详解

    它通过在控制器类中使用@InitBinder注解来配置Web数据绑定。 WebDataBinder的使用 在使用WebDataBinder之前,需要了解它的工作机制。WebDataBinder是一个用于将Web请求参数绑定到JavaBean的属性上的工具。它可以...

    Springside4 学习整理

    在实际应用中,可能会遇到类型转换的问题,如将用户输入的日期字符串转换为 Date 类型,这时可以使用 @InitBinder 注解和 CustomDateEditor 类进行定制化处理。 - Spring Data JPA:简化了 ORM(对象关系映射),...

    spring3mvc如何把checkbox的值绑定到model对象的int数据类型.pdf

    `initBinder`方法接收一个`WebDataBinder`参数,然后通过`binder.registerCustomEditor`注册我们的`IntEditor`,这样Spring MVC就能在处理请求时使用这个转换器来处理非布尔类型的`int`值。 接着,我们定义一个处理...

    第12章Spring MVC参数绑定的验证

    `@ControllerAdvice`可以全局处理验证错误,`@InitBinder`则可以在所有控制器方法调用之前设置数据绑定规则。 - **BindingResult和ModelAttribute**: 在控制器方法中添加`BindingResult`参数,可以获取到验证...

    springmvc类型转换.md

    在Spring 3.1之前的版本中,如果需要对特定类型的参数进行格式化或者转换,可以使用`@InitBinder`注解来注册一个自定义的编辑器(`CustomEditor`)或转换器(`Converter`)。下面是一个例子: ```java import org....

    Spring 2.5 基于注解驱动的Spring MVC

    public void initBinder(WebDataBinder binder) { binder.registerCustomEditor(CustomType.class, new CustomTypeEditor()); } } ``` ### 7. 数据准备 在处理请求之前,你可以使用`@ModelAttribute`注解的方法...

    spring中的自定义属性编辑器

    一种是在XML配置文件中使用`propertyEditorRegistrar`元素,另一种是在Java配置中使用`@InitBinder`注解。 在XML配置中: ```xml &lt;!-- 配置属性 --&gt; ``` 在Java配置中: ```java @Controller public ...

    springmvc自定义属性编辑器和参数解析器

    注册自定义属性编辑器可以通过`@InitBinder`注解和`WebDataBinder`的`registerCustomEditor()`方法实现。 参数解析器(HandlerMethodArgumentResolver)则负责解析HTTP请求中的参数,并将其转换为控制器方法的参数...

    关于Spring MVC同名参数绑定问题的解决方法

    这里的`@ModelAttribute`注解的参数(如`"account"`和`"user"`)需要与`@InitBinder`中指定的值一致,以确保Spring MVC能够正确地找到对应的数据绑定规则。 总结来说,处理Spring MVC中的同名参数绑定问题,需要...

    spring数据格式转换

    1. 在Bean定义中使用`@InitBinder`注解和`registerCustomEditor()`方法: ```java @Controller public class MyController { @InitBinder public void initBinder(WebDataBinder binder) { binder....

    Java实训教程 Java软件开发实战 Java开发框架介绍 SpringMVC_6_数据校验 共26页.pptx

    public void initBinder(DataBinder binder) { binder.setValidator(new UserInfoValidator()); } @RequestMapping(value = "/save", method = RequestMethod.POST) public String save(@Valid UserInfo ...

Global site tag (gtag.js) - Google Analytics