Spring Framework 开发参考手册 之四 属性编辑器…

2008-02-23 09:50:00来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

第 4 章 属性编辑器,数据绑定,校验与BeanWeapper(Bean封装)

4.1. 简介

是否需要对业务逻辑进行验证是一个常见的问题。 有关这一点存在两种截然想法的回答,Spring提出的验证模式(和数据绑定)对两者都不排斥。 验证应该是可以定制化的并且能够依附于任何的验证框架而不应该被强制绑定在Web层。 基于以上原因,Spring提供了一个Validator接口,这个接口可以被应用于应用程序的任何一个层面 (表示层或者逻辑层等 译者注)

数据绑定可以使用户输入与应用程序的域模型进行动态绑定(或者用于处理用户输入对象)。 针对这一点Spring提供了所谓的DataBinder(数据绑定)。 DataBinder和Validator组成了验证包(validation),它主要被用于MVC结构, 除此之外也可以被用于其他的地方。

BeanWrapper是Spring架构的一个基本组件,它在很多地方都是很有用的。 然而,你可能很少直接使用BeanWrapper。 由于这是一篇参考文档,所以我们觉得对此稍作解释还是有必要的。 因为今后你也许进行对象与数据之间的绑定操作,到时就会用到BeanWrapper 了。

Srping大量的使用了PropertyEditors(属性编辑)。 它属于JavaBeans规范的一部分。就像我们上面提到的BeanWrapper一样, PropertyEditors和BeanWrapper以及DataBinder三者之间有着密切的联系。

4.2. 使用DataBinder进行数据绑定

DataBinder构建于BeanWrapper之上。[2].

4.3. Bean处理与BeanWrapper

org.springFramework.beans包遵循Sun发布的JavaBeans标准。 一个JavaBean是一个简单的包含无参数构造函数的类,并且包含seter和getter属性方法。 例如prop属性对应setProp(...)方法和getProp()方法. 如果需要了解JavaBeans的详细信息可以访问Sun的网站(java.sun.com/products/javabeans).

这个包中一个非常重要的概念就是BeanWrapper 接口以及它的实现(BeanWrapperImpl)。 根据JavaDoc中的说明,BeanWrapper提供了设置和获得属性值的功能(单个的或者是批量的), 可以获得属性描述、查询只读或者可写属性。而且,BeanWrapper还支持嵌套属性, 可以不限制嵌套深度的进行子属性的设置。所以,BeanWrapper支持标准JavaBeans的PropertyChangeListenersVetoableChangeListeners。除此之外,BeanWrapper还提供了设置索引属性的支持。 一般情况下不在应用程序中直接使用BeanWrapper而是使用DataBinderBeanFactory。 从BeanWrapper的名字就可以看出:它封装了一个bean的行为,比如设置和取出属性值。

The way the BeanWrapper works is partly indicated by its name: it wraps a bean to perform actions on that bean, like setting and retrieving properties.

4.3.1. 设置和提取属性以及嵌套属性

设置和提取属性可以通过使用重载的setPropertyValue(s)getPropertyValue(s) 方法来完成。 在Srping的JavaDoc中对它们有详细的描述。有关这两个方法的一些约定习惯如下所列:

表 4.1. 属性示例

语法解释name指出与 getName()isName()setName()相关的name信息 account.name提供嵌套属性的name,比如 getAccount().setName()getAccount().getName()方法 account[2]Indicates the third element of the indexed property account. Indexed properties can be of type array, list or other naturally ordered collection

在下面的例子中你将看到一些使用BeanWrapper设置属性的例子。

注意:如果你不打算直接使用BeanWrapper这部分不是很重要。 如果你仅仅使用DataBinderBeanFactory或者他们的扩展实现, 你可以跳过这部分直接阅读PropertyEditors的部分。

考虑下面的两个类:

public class Company {

    private String name;

    private Employee managingDirector;



    public String getName()	{ 

        return this.name; 

    }

    public void setName(String name) { 

        this.name = name; 

    } 

    public Employee getManagingDirector() { 

        return this.managingDirector; 

    }

    public void setManagingDirector(Employee managingDirector) {

        this.managingDirector = managingDirector;

    }

}
			   
			   

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:java.net.SocketException翻译

下一篇:对极限编程四个核心的理解(二)