`
冰加盐
  • 浏览: 48093 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

ActionForm 字段getter,setter方法找不到异常

    博客分类:
  • java
 
阅读更多

ActionForm 字段getter,setter方法找不到异常:

实际中的问题:

 

首先,当然还是要说它的属性及setter/getter方法。属性以小写字母开头,驼峰命名格式,相应的getter/setter方法是get/set接上首字母大写的属性名。多数情况是对的,且当前流行 的IDE(Eclipse、JBuilder)也都认这个死理。但要是碰到些遗留的代码中属性名捕规范,或者有些人就是顽固,或真是对属性命名犹豫不决时的写下的代码时,那还是有的你研究一下。

这里来看看Eclipse为几个属性生成的getter/setter方法吧:

sName(从C转过来的,受匈牙利的影响,认为Name是个字符串,所以加个前缀s)

getSName()/setSName(String name)

 

URL(平时认为是缩略语/专有名词,理当全部大写,这在我们对待ID时经常发生)

 getURL()/setURL(String url)

 

上面第一个有Eclipse为我们生成的getSName()/setSName(String name)方法,参照JavaBean规范来说,其实是错误的。如果出现这样的方法,放到我们的标签(像Struts标签)或是进行Hibernate/iBatis那种映射时,你就能收到报找不到sName属性相应的getter()/setter方法那样的错误。不是明明有getSName()和setSName(String name),可是方法名错了,正确的版本应该是getsName()和setsName(String name).

 

前面首先解释了属性命名不规范产生的问题的原因,现在就来更仔细的了解关于JavaBean属性及其getter/setter方法的约定,有些是硬性的。

 

属性与存取访问的规定

 

为JavaBean创建属性时,必须牢记:缩略语通常被视为一个独立的单词,而不是单个字母。例如,URL对于的属性名应该用url,相应的getUrl()/setUrl(String url),所以ID还是用id作为属性吧,相应的getId()/setId();

 

规范中另一个特别的地方就是,第二个字母为大写的属性名要区别对待。如果属性名的第二个字母是大写的,那么该属性名直接用做getter、setter方法中get、set的后部分,就是说大小写不变。这就是为什么sName对应的存取方法是getsName()/setsName()的原因,不能不说这条规则很令人费解。那就更有必要看看下面表格的规范。

 

 

属性名/类型

getter方法

setter方法

xcoordinate/Double

public Double getXcoordinate()

public void setXcoordiate(Double newValue)

xCoordinate/Double

public Double getxCoordinate()

public void setxCoordiate(Double newValue)

XCoordinate/Double

public Double getXCoordinate()

public void setXCoordiate(Double newValue)

Xcoordinate/Double

不允许

不允许

student/Boolean

public Boolean getStudent()

public void setStudent(Boolean newValue)

student/Boolean

public boolean getStudent()

public boolean isStudent()

public void setStudent(boolean newValue)

 

属性是首字母大写,次字母写时你永远找不到它的getter/setter方法的,对这个属性的使用是会害人的。对于boolean类型的属性的getter方法是isXxx()还是getXxx()就自己决定了,isXxx()应该更接近于自然语言,跟他顺溜些。

 

知道了属性及存取方法的规定,那么你即使是面对古老的代码,在使用标签来引用或与Hibernate/iBatis等进行映射,你就知道该填什么样的属性名了。

 

还有一个我们很少碰触到的是关于可索引属性的getter/setter方法(方面C#表现的比Java要优秀),比如有属性

private OrderItem[] orderItem;

 

那它相应的getter/setter除常见的两个外,还有带索引参数的两个版本,如下:

 

public OrderItem[] getOrderItem();

 

public void setOrderItem(OrderItem[] newArray);

 

public OrderItem[] getOrderItem(int index);

 

public void setOrderItem(int index, OrderItem orderItem);

 

关于Bean导航

 

最后就是Bean导航的规范,通常用点记法(dot notation)来引用属性,同时也要注意索引属性的访问。在Web MVC的表单中,以及标签中。Jarkata-Commons-BeanUtils中用的很多。看点记法的示例:

java代码

点记法

anOrder.getAccount().getUsername()

anOrder.account.username

anOrder.getOrderItem().get(0).getProductId()

anOrder.orderItem[0].productId

anObject.getId()

anObject.id

anObject.getxCoordinate()

anObject.xCoordinate

 

比如像Struts1标签:

<html:text propety="stocks[1].code"/>

 

会显示出FormBean中stocks列表的第二个元素的code属性,提交就填充到相应的位置上去。

 

 

 

 

 

 

分享到:
评论

相关推荐

    ActionForm

    ActionForm类通常包含与表单字段相对应的属性和getter/setter方法。Struts框架会自动将HTTP请求参数映射到这些属性上,然后由Action类处理这些已填充数据的对象,执行业务逻辑。 例如,假设有一个注册表单,包括...

    验证ActionForm存到了request中

    ActionForm类通常包含与表单字段对应的属性和getter、setter方法。例如,如果表单有一个名为"name"的输入字段,那么ActionForm可能会有一个`private String name;`属性和相应的`getName()`、`setName(String name)`...

    actionForm list

    ActionForm类的实现可以包括自定义的setter和getter方法,用于设置和获取表单数据,以及可能的validate()方法,用于在业务处理前验证数据。 **工具应用** 在实际开发中,开发者可能会使用IDE如Eclipse或IntelliJ ...

    struts1使用actionform实现表单验证

    在这个类中,为每个表单字段声明对应的属性,并提供getter和setter方法。 3. **添加验证逻辑** 在ActionForm中,我们可以通过重写`validate()`方法来实现表单验证。这个方法会在Action执行之前调用,如果验证失败...

    提交多行数据到Struts的ActionForm的List属性中

    注意,你需要确保在ActionForm类中提供相应的getter和setter方法,以便Struts框架能够正确地设置和获取List属性。 提交表单后,Action类接收到ActionForm实例,可以通过items属性访问并处理这些数据。例如,你可能...

    [摘]Struts 学习笔记之ActionForm

    ActionForm类通常包含与HTML表单字段相对应的属性,以及对应的getter和setter方法。 1. **ActionForm的基本结构** - `ActionForm`类是Struts框架提供的基类,开发者通常需要创建自己的Form Bean类来继承它。 - 在...

    ActionForm属性中存在对象数组如何处理

    同样,我们需要为这个数组提供getter和setter方法,但这里还需要重写`reset`方法,以便在表单提交前初始化数组的大小。在`reset`方法中,我们从请求中获取对象的数目,然后创建相应大小的`Student`对象数组: ```...

    【张冰Struts2学习笔记】0202_Struts2的三种接收用户输入的方法

    表单字段的数据会自动映射到ActionForm对象的属性上。 ```java public class UserForm implements ActionForm { private String username; // getter & setter 方法 } public class UserAction extends ...

    struts表单验证

    - **JavaBean验证**: 在ActionForm类中添加getter和setter方法,然后在对应的validate()方法中编写验证逻辑。如果验证失败,设置ActionErrors并将错误信息返回到视图层展示。 - **XML配置验证**: 使用struts-...

    struts架构的指导

    ActionForm通常包含属性和getter/setter方法,属性对应HTML表单元素,setter方法用于设置请求参数,getter方法则在Action中使用以访问这些数据。此外,ActionForm还支持数据验证,你可以通过实现ValidatorForm接口或...

    easystruts_1.2源代码

    1. **字段映射**:EasyStruts可以根据Action的属性自动创建ActionForm的对应字段,并进行类型转换,避免了手动编写getter和setter方法的繁琐过程。 2. **校验逻辑**:通过配置文件,开发者可以方便地定义表单字段的...

    Struts1.2动态表单验证

    它们通常与HTML表单字段相对应,并包含相应的getter和setter方法。 2. 验证框架:Struts1.2的验证框架包括一个或多个ValidatorForm子类,这些子类继承自Struts的ActionForm基类。ValidatorForm提供了验证逻辑的基础...

    struts1入门

    继承自ActionForm的类通常包含表单字段的getter和setter方法,用于收集和验证用户输入。 3. **Action**:这是处理业务逻辑的类,继承自`org.apache.struts.action.Action`。此类需要重写`execute`方法,该方法执行...

    strus 相关程序

    `ActionForm`则用于封装来自客户端的请求数据,它是一个简单的JavaBean,包含了表单字段的属性和getter/setter方法。在请求处理过程中,Struts会自动将表单数据填充到ActionForm对象中,然后传递给Action进行处理。...

    Struts,Hibernate,Spring集成开发宝典_strust代码.rar

    ActionForm通常包含了表单字段对应的属性和getter、setter方法,是业务逻辑与视图层交互的关键。 2. **Action**:Action是Struts的核心,它实现了业务逻辑。当一个请求到达时,Struts通过配置的ActionMapping找到...

    java程序的代码规范

    - 为每个私有字段提供getter和setter方法。 - getter和setter方法应符合命名规范,如`getLastName()`、`setLastName(String lastName)`。 **2.7 构造方法(*)** - 每个类至少有一个构造方法。 - 构造方法可以是默认...

    beanutils高手学习笔记,重要的学习笔记,想提高的看

    这个库提供了许多方便的方法,使得开发者可以便捷地对JavaBean的属性进行读取和设置,而无需手动编写大量的getter和setter方法。 1. **BeanUtils的核心功能**: BeanUtils 提供了对JavaBean进行get和set属性值的...

    java做的struts验证框架例子

    1. 创建ActionForm:首先,创建一个ActionForm类,其中包含需要验证的属性以及getter和setter方法。 2. 编写Validation.xml:配置文件中定义了ActionForm字段的验证规则。例如: ```xml 用户名...

    Struts 1.x中批量封装对象

    在Action类中,你可以通过`ActionForm`的getter方法获取到这个集合,并进行业务处理。 5. **数据库操作**:在Action中,你可以遍历这个集合,对每个对象进行数据库的插入、更新或删除操作。 这种批量封装的方式...

Global site tag (gtag.js) - Google Analytics