multibox的使用

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 studyday 的 blog

struts标签库里的html:multibox的使用问题

在页面中加了一个<html:multibox property=“matid“>的标签,总是报错,“参数类型不匹配”,matid是个arraylist类型,在form中及action中都是这个类型,而且,页面的前端显示也没有问题。不知道哪里出了问题。后来看了些资料,好像multibox中只能放string[]类型的参数。于是将matid改为 string类型,不再报错。

有一个问题不能理解:为什么在页面显示时可以使用arraylist类型的参数,而提交却总是报错呢?奇怪!


以下为引用其它:

如果这个复选框没有被选中,浏览器不会为这个控件提交一个值。相反假如被选中,那这个控件的name和他的value将被提交。这种行为就是在actionform里有reset()方法的原因。因为浏览器从来不会标记下那些复选框没有被选定,reset所有的boxes的仅有的解决办法就是在request里面检查那些boxes是否存在。
multibox控件被设计成使用一个string的数组。其中的每个元素代表一个checked box。为了检查一个box,添加一个string型的box的值到这个数组中去,对那些没有选中的box,删掉数据中元素。
当传递一个值时,multibox控件扫描数组中的元素看是否匹配。如果匹配的话,那box就是被选中的,否则,box没有被选中。假如用户选中box然后提交了所在的form,这个box的值就会被包括进request中。控件就会添加这个box 到被选中的数组里。假如没有东西被选中,也将没有东西被提交,也没有东西会被加到选中的数组里。假如actionform bean仍然保持 session contezt,那在两个request件,reset()方法需要将选中数组的长度置为0(但是这个数组本身不为null)
例子
<logic:iterate id="item" property="items">
  <html:multibox property="selecteditems">
   <bean:write name="item"/> 
  </html:multibox> 
   <bean:write name="item"/> 
</logic:iterate>
每个checkbox的labels就是他的property的值,被选中了的items的列表是在一个名为selecteditems的数组里。不被选中的items将不回出现在数组selecteditems里。multiox为当前的item,检查selecteditems数组,如果他出现在selecteditems中,写入一个被选定了的checkbox ,假如不是这样,他就写一个未被选定的 checkox。


 

string[] s=new string[];

 

本文关键:multibox的使用
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top