posts - 0,comments - 0,trackbacks - 0
 

图片按钮,HTML中的一个特例.在规范中说明,浏览器会把图片按钮当成一个image map对待.这就意味的不像其它的按钮会返回一个String类型的value.图片按钮会返回一个XY的坐标. 像下面:

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)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: