的取值與驗證問題

我這個例子主要是得到從後臺返回的結果反映在前臺的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的焦點,如果有知道的兄弟交流下...
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章