首先,定义了一个Department的JavaBean对象如下
DAO.java
在一个Action类Employee.java中将depts放入requestMap中
最后,在index.jsp里定义了一个链接
Struts.xml如下:
input.jsp如下:
结果显示如下:
可以看到,input.jsp页面打印出来的requestScope.depts是正常的。也就是说,<s:select>标签出了问题,而且是listValue="deptName"无法获取到deptName。
原因分析:
<s:select>标签,解释下这个标签属性:
headerValue : 默认值value
headerKey : 默认name
list : 源数据 (可以在action方法里从数据库获取list)
name : 被选数据存放的位置(需在action类(Employee)中定义该对象)
listKey : 下拉选项的name
listValue : 下拉选项的value
value : 默认值
仔细检查department.java文件,发现department类的成员变量deptName的get、set方法的大小写写错了,怪不得<s:select>的listValue="deptName"无法获取到deptName。
解决办法:将departmnet.java的成员变量deptName的get、set方法改正即可让<s:select>的listValue="deptName"获取到deptName。
运行结果如下:
在save.jsp页面显示该结果:
save.jsp页面结果如下:
同时,从上面的运行结果也可以看出,<s:select>标签的name属性存放的是listKey的值,而不是listValue的值,listValue是显示出来的值。