的取值与验证问题

我这个例子主要是得到从后台返回的结果反映在前台的checkbox上。
在后台action中首先应该有一个List,用于前天checkbox的迭代:

private List<PropertyBean> propertyList;

PropertyBean有propertyId和propertyName两个属性。另外一点需要注意的是在action中需要记得给propertyList set和get方法。要不然在前天就取不到值了。

private RoomBean room = new RoomBean();//记得set,get方法
room.setPropertyId("1,2");

因为property可能是多个值,所以保存在后台的就可能是1,2这种形式的。

PropertyBean p1 = new PropertyBean();
p1.setPropertyId("1");
p1.setPropertyName("pname1");

PropertyBean p2 = new PropertyBean();
p2.setPropertyId("2");
p2.setPropertyName("pname2");
propertyList.add(p1);
propertyList.add(p2);

我在这里是给propertyList设定了两个值,好让前台有数据可以迭代。

String pro[];
pro=room.getPropertyId().split("[,]+");
List list = new ArrayList();
for (int i = 0; i < pro.length; i++) {
list.add(pro[i]);
}
request.setAttribute("propertyId", list);

这一段代码有点关键,这个主要是在<s:checkboxList>中的value属性。

<s:checkboxlist list="propertyList" label="设施" listKey="propertyId" listValue="propertyName" name="room.propertyId" value="#request.propertyId"></s:checkboxlist>

我来解释下这些属性的含义,list就是我们在后天定义的list的名字,lable是一个标签,这行代码相当于一个tr里面放了两个td,一个td放lable,一个td放checkbox,然后listkey和listvale分别代表list中bean的属性。listvalue是显示在页面上的值。而name值则是为了绑定后台的属性值room,而propertyId是room的一个属性值。value值则是为了使后台返回的数据,如1,2这样的数据与前台进行匹配,如果符合则选中。这个是在request范围中把propertyId取出来。
最后在说一下关于<s:checkboxList>验证是否选中的问题,只需要直接这样子写即可:

var value = document.getElementsByName('room.propertyId');
var length = value.length;
var aa = "";
alert(length);
for(var i = 0 ;i<length;i++){
if(value[i].checked == true){
aa = "哈哈";
}
}
if(aa==""){
alert("请选择");
}

但是有点奇怪的是用这种方式不能获得checkboxlist的焦点,如果有知道的兄弟交流下...
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章