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类通常包含与表单字段相对应的属性和getter/setter方法。Struts框架会自动将HTTP请求参数映射到这些属性上,然后由Action类处理这些已填充数据的对象,执行业务逻辑。 例如,假设有一个注册表单,包括...
ActionForm类通常包含与表单字段对应的属性和getter、setter方法。例如,如果表单有一个名为"name"的输入字段,那么ActionForm可能会有一个`private String name;`属性和相应的`getName()`、`setName(String name)`...
ActionForm类的实现可以包括自定义的setter和getter方法,用于设置和获取表单数据,以及可能的validate()方法,用于在业务处理前验证数据。 **工具应用** 在实际开发中,开发者可能会使用IDE如Eclipse或IntelliJ ...
在这个类中,为每个表单字段声明对应的属性,并提供getter和setter方法。 3. **添加验证逻辑** 在ActionForm中,我们可以通过重写`validate()`方法来实现表单验证。这个方法会在Action执行之前调用,如果验证失败...
注意,你需要确保在ActionForm类中提供相应的getter和setter方法,以便Struts框架能够正确地设置和获取List属性。 提交表单后,Action类接收到ActionForm实例,可以通过items属性访问并处理这些数据。例如,你可能...
ActionForm类通常包含与HTML表单字段相对应的属性,以及对应的getter和setter方法。 1. **ActionForm的基本结构** - `ActionForm`类是Struts框架提供的基类,开发者通常需要创建自己的Form Bean类来继承它。 - 在...
同样,我们需要为这个数组提供getter和setter方法,但这里还需要重写`reset`方法,以便在表单提交前初始化数组的大小。在`reset`方法中,我们从请求中获取对象的数目,然后创建相应大小的`Student`对象数组: ```...
表单字段的数据会自动映射到ActionForm对象的属性上。 ```java public class UserForm implements ActionForm { private String username; // getter & setter 方法 } public class UserAction extends ...
- **JavaBean验证**: 在ActionForm类中添加getter和setter方法,然后在对应的validate()方法中编写验证逻辑。如果验证失败,设置ActionErrors并将错误信息返回到视图层展示。 - **XML配置验证**: 使用struts-...
ActionForm通常包含属性和getter/setter方法,属性对应HTML表单元素,setter方法用于设置请求参数,getter方法则在Action中使用以访问这些数据。此外,ActionForm还支持数据验证,你可以通过实现ValidatorForm接口或...
1. **字段映射**:EasyStruts可以根据Action的属性自动创建ActionForm的对应字段,并进行类型转换,避免了手动编写getter和setter方法的繁琐过程。 2. **校验逻辑**:通过配置文件,开发者可以方便地定义表单字段的...
它们通常与HTML表单字段相对应,并包含相应的getter和setter方法。 2. 验证框架:Struts1.2的验证框架包括一个或多个ValidatorForm子类,这些子类继承自Struts的ActionForm基类。ValidatorForm提供了验证逻辑的基础...
继承自ActionForm的类通常包含表单字段的getter和setter方法,用于收集和验证用户输入。 3. **Action**:这是处理业务逻辑的类,继承自`org.apache.struts.action.Action`。此类需要重写`execute`方法,该方法执行...
`ActionForm`则用于封装来自客户端的请求数据,它是一个简单的JavaBean,包含了表单字段的属性和getter/setter方法。在请求处理过程中,Struts会自动将表单数据填充到ActionForm对象中,然后传递给Action进行处理。...
ActionForm通常包含了表单字段对应的属性和getter、setter方法,是业务逻辑与视图层交互的关键。 2. **Action**:Action是Struts的核心,它实现了业务逻辑。当一个请求到达时,Struts通过配置的ActionMapping找到...
- 为每个私有字段提供getter和setter方法。 - getter和setter方法应符合命名规范,如`getLastName()`、`setLastName(String lastName)`。 **2.7 构造方法(*)** - 每个类至少有一个构造方法。 - 构造方法可以是默认...
这个库提供了许多方便的方法,使得开发者可以便捷地对JavaBean的属性进行读取和设置,而无需手动编写大量的getter和setter方法。 1. **BeanUtils的核心功能**: BeanUtils 提供了对JavaBean进行get和set属性值的...
1. 创建ActionForm:首先,创建一个ActionForm类,其中包含需要验证的属性以及getter和setter方法。 2. 编写Validation.xml:配置文件中定义了ActionForm字段的验证规则。例如: ```xml 用户名...
在Action类中,你可以通过`ActionForm`的getter方法获取到这个集合,并进行业务处理。 5. **数据库操作**:在Action中,你可以遍历这个集合,对每个对象进行数据库的插入、更新或删除操作。 这种批量封装的方式...