图片按钮,HTML中的一个特例.在规范中说明,浏览器会把图片按钮当成一个image map对待.这就意味的不像其它的按钮会返回一个String类型的value值.图片按钮会返回一个X和Y的坐标. 像下面:
myImageButton.x=200
myImageButton.y=300
在Struts中,对于很多控件,我们可以创建在ActionForm中一个简单String的属性.但对图片按钮不行.因为图片按钮提交的不在是简单的 name=value的形式.
幸运的事,在Struts中提供了ActionForm嵌套bean的能力.就是说ActionForm中的属性可以是另外一个bean的类型.比如我们有一个MyForm类:
1class MyForm extends ActionFrom{
2
3 MyBean myBean;
4
5 public MyForm(){
6
7 init();
8
9 }
10
11public void init(){
12
13 myBean = new MyBean();
14 }
16
17public MyBean getMyBean(){
18 return this.myBean;
20 }
22
23}
24
注意,一定要初始化myBean,因为不是非String和本地类型的 类的实体域,默认是为null.如果不初始化在jsp页面第一次加载时会试图用ActionForm的值设置表单的值.这时就会有空指针异常.
对应的MyBean可以是:
class MyBean{
String name;
public void setName(String name){
this.name=name;
}
public String getName(){
return this.name;
}
}
这样我们在JSP页面中表单中可以有:
<html:text property=" myBean.name"/>
这样实际会调用 getMyBean().setName(value),或getMyBean().getName().
这样对于图片按钮我们就可以用一个ImageButtonBean的类型(struts中已经提供了).在我们的ActionForm中可以写为:
private ImageButtonBean logonButton = new ImageButtonBean();
private ImageButtonBean cancelButton = new ImageButtonBean();
public void setLogonButton(ImageButtonBean button) {
this.logonButton = button;
}
public ImageButtonBean getLogonButton() {
return this.logonButton;
}
public void setCancelButton(ImageButtonBean button) {
this.cancelButton = button;
}
public ImageButtonBean getCancelButton() {
return this.cancelButton;
}
在Action中可以简单的用
Boolean selected = ((myForm) form). getCancelButton().isSelecte();
判断按钮是否被按下.
posted on 2007-04-21 11:02
炎凉 阅读(96)
评论(0) 编辑 收藏