Struts 原理(二) --- 3.3 简化Struts开发
来源:互联网 发布:外国人淘宝评论 编辑:程序博客网 时间:2024/05/16 12:17
3.3 简化Struts开发
3 .3 . 1 使用动态FormBean简化开发
1 . 配置动态Form
其实就是不需要什么ActionForm了 ,首先在struts-config.xml中进行配置 , 例如下面 :
<form-bean name="houseInfoDynaForm"
type="org.apache.struts.action.DynaActionForm">
<form-property name="title" type="java.lang.String"></form-property>
<form-property name="cityId" type="java.lang.Integer"></form-property>
<form-property name="streetId" type="java.lang.Integer"></form-property>
<form-property name="rent" type="java.lang.Double"></form-property>
<form-property name="room" type="java.lang.Integer"></form-property>
<form-property name="hall" type="java.lang.Integer"></form-property>
<form-property name="houseType" type="java.lang.Integer"></form-property>
<form-property name="houseInfo" type="java.lang.String"></form-property>
<form-property name="telephone" type="java.lang.String"></form-property>
<form-property name="contactName" type="java.lang.String"></form-property>
</form-bean>
在struts-config.xml中写这些足够了 , 如果需要修改ActionForm的参数也是只需要在这里修改的 ,
当然 对应的<action> 还需要修改其中的属性 name = "value" value 是 houseInfoDynaForm
2 . 取得动态Form中的值
从动态Form中取值的方式与普通的FormBean getter方法取值不同 , 所以对应Action 代码也不同 ,
所以对应的Action代码也不同 .
DynaActionForm houseInfoDynaForm = (DynaActionForm)form ;
HouseInfo houseInfo = new HouseInfo();
houseInfo.setContactName(houseInfoDynaForm.getString("title"));
houseInfo.setHall((Integer)houseInfoDynaForm.get("hall"));
houseInfo.setHouseInfo(houseInfoDynaForm.getString("houseInfo"));
houseInfo.setHouseType((Integer)houseInfoDynaForm.get("houseType"));
houseInfo.setRent((Double)houseInfoDynaForm.get("rent"));
houseInfo.setRoom((Integer)houseInfoDynaForm.get("room"));
houseInfo.setStreetId((Integer)houseInfoDynaForm.get("streetId"));
houseInfo.setTelephone(houseInfoDynaForm.getString("telephone"));
houseInfo.setTitle(houseInfoDynaForm.getString("title"));
可以使用get方法从动态Form中取值 , 这一般是针对非String类型的 ,比如 int 或者 double 类型的 , 而String类型的就只使用getString() 了 ,
那么 象 houseInfoDynaForm.getString("title") 中的 title 是一个key 值 , 它是对应struts-config.xml中 FormBean中的 name 属性的 .
但是还有注意 , get方法取到的值为Object类型 , 需要我们使用 ((Integer)houseInfoDynaForm.get("houseType")) 或者
((Double)houseInfoDynaForm.get("rent")) 来 转换成实际的类型 . 也可以通过getString()来直接获取String类型的值 .
至此 , 我们已经完成了修改的工作 .
使用动态FormBean可以不必创建对应FormBean类, 减少了编码工作, 也方便修改 .
3.3.2 使用实体对象作为FormBean属性简化开发
问题:
使用动态Form虽然省去了FormBean的编码工作 , 但ActionBean中的代码并没有因此变得简单 ; 而且业务逻辑的变化 , 数据库增减字段时 ,
需要修改的地方也包括实体类 , FormBean定义 和 ActionBean 中相应代码 , 很容易漏掉某处而引入错误 .
分析 :
我们知道EL表达式可以通过${HouseInfoForm.title} 的方式显示数据 , 假如HouseInfo中有一个类型为HouseInfo 类型的 属性 ,
如 下面示例所示 :
public class HouseInfoForm extends ActionForm{
private HouseInfo item = new HouseInfo();
//下面就要生成get 和set 方法了
}
我们可以通过${HouseInfoForm.item.title} 来显示了 .
总结到此, 我们使用FormBean 的主要目的是让表单提交的数据自动提交到FormBean中 , 如果 ActionForm 如上面的例子那样定义 ,
那么对应的表单域中那么属性要这样写呢?
- Struts 原理(二) --- 3.3 简化Struts开发
- XDoclet简化Struts开发
- Struts控制器简化MVC开发
- Struts开发笔记二
- Struts开发笔记二
- 用lazyBean简化struts formbean开发
- Struts 原理(二) --- 3.1使用DispatchAction开发计算器
- (二)struts之原理
- myeclips开发struts (二)
- Struts二开发环境筹建
- Struts原理
- struts原理
- Struts 原理
- Struts原理
- Struts原理
- Struts 原理
- struts原理
- Struts原理
- sgu 249 Matrix
- Eclipse设置提示信息
- Flash互动电子地图制作手册
- 怎么样避免前面action = “123.do” 而struts-config.xml 中path = “/123” 的 404 异常
- 郭克华Struts标签第一讲
- Struts 原理(二) --- 3.3 简化Struts开发
- Eclipse的new选项中显示JSP, HTML等
- VMware下Linux与主机ADSL方式的共享上网
- 传智播客Servlet学习,请求重定向与请求转发
- 身为男人要做的十件事
- 当你26岁还没结婚的话
- 酒桌上喝酒的学问技巧
- squid refresh_pattern命令
- pro*C初学1---编译环境