资源Resource对象中同时有类别Category对象的categoryid,categoryname字段
然后页面的添加修改Resource的时候显示如下:
<s:select list="categorys" name="resource.categoryid" listKey="id" listValue="name" οnchange="choice('categoryname',this.id)" id="category" label="类别" headerKey="0" headerValue="--请选择--"></s:select>
如果以前做的时候:
(1)在Action中从resource对象取出categoryid 的值Int cateid=resource.getCategoryid();
(2)根据categoryid查出category对象Category cate=dao.getCategoryByid(cateid);
(3)设置resource的属性resource.setCategoryname(cate.getCategoryName);
缺点:无论是添加还是修改均会访问数据库(如果访问量过大的话,会给服务器照成的压力增加)!
所以最好能在用户选定(修改)下拉框id后,name也有值
方法:选定id后将显示的text值取出来放进隐藏域(取名为‘对象.属性’)中,最后提交的时候可以一起发给后台的Action
呵呵,也许这个方法大家早都会了!
只是开始我还笨笨的在后面查数据库,后来还貌似很聪明的教同学们:为了给服务器减少压力,应该用Ajax在页面查出来直接赋值……
现在想想还是自己太懒了,其实text是可以直接取到了,又何必非要查数据库呢?
下面就是我用的方法,有繁琐、待更正、或其它方法的同学欢迎拍砖!!!!
对了,还要提醒一下大家:
如果你用的是Html标签的时候修改页面要这样写
<input type="hidden" name="resource.categoryname" id="categoryname" value="<s:property value='resource.categoryname'/>" />
否则:当你select没修改的话,resource.categoryname就为空了(这个值就丢失了)
每天进步一点点,加油!!!