欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

的取值与验证问题

程序员文章站 2022-03-03 08:12:59
...
我这个例子主要是得到从后台返回的结果反映在前台的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的焦点,如果有知道的兄弟交流下...
相关标签: struts2标签