ActionForm Bean在Struts里用来保存网页request传递之间的数据。比如我们现在写的NewForm Bean用来收集表格内的信息,
类似于servlet的request.getParamenter()的作用;当用户提交以后,数据将保存在bean内,然后再做处理。
- 点击Source Packages > com.bbs.struts,右键New > Java Package... 创建一个com.bbs.struts.form的package用于存放
所有form;
- 右键com.bbs.struts.form, New > Struts ActionForm Bean...如果New菜单里没有的话,选择other...,categories里选择
Struts,File types一栏里选择Struts ActionForm Bean...;
- 为这个ActionForm取名叫NewForm,然后按Finish完成。
IDE将创建一个NewForm bean,并在右边的Source Editor里面打开它。默认的话,IDE将创造2个一个String型的name和int型的number,2个属性;并且定义了它们的accessor方法。另外IDE将在struts-config.xml里面,添加对这个bean的声明;
<form-beans>
<form-bean name="NewForm" type="com.bbs.struts.form.NewForm"/>
</form-beans>
- 在Source Editor里面,将原来的name,number字段删除,并删除与之相关的accessor方法。然后为NewForm添加以下字段,这些字段与之前的post.jsp所用到的字段一一对应。
private String name;
private String subject;
private String content;
private String url;
private String email;
private int iconId;
private String password;
private String font;
private List icons;
private String result;
利用insert code...功能,添加相应的accessor方法。
- 考虑到因为图标的列其实在生成这个网页的时候就自动添加的,所以在这个ActionForm bean的Constructor的方法里面,就要处理icon了,还有就是对字色,网络链接做一下预处理:
public NewForm() {
super();
// TODO Auto-generated constructor stub
setUrl("http://");
setFont("#800000");
String sql = "select id,name,src from icon order by id";
QueryRunner qr = DbHelper.getQueryRunner();
List list = null;
try {
list = (List) qr.query(sql, new BeanListHandler(Icon.class));
// TODO Auto-generated constructor stub
} catch (SQLException ex) {
Logger.getLogger(NewForm.class.getName()).log(Level.SEVERE, null, ex);
}
setIcons(list);
}
- 同样在validate方法里,添加对subject验证,如果subject为空的话,改名“无题”。
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
if (getSubject() == null || getSubject().length() < 1) {
setSubject("无题");
}
return errors;
}
- 第一个ActionForm Bean就完成了。