<hr color="#00FFFF" size="4">
<s:textfield label="管理员编号" name="user.adminId"></s:textfield>
<s:password label="密码" name="user.adminpassword"></s:password>
<%
HashMap map = new LinkedHashMap();
List list = new ArrayList();
map.put("id","1");
map.put("nw","管理员");
list.add(map);
map.put("id","2");
map.put("nw","教研室主任");
list.add(map);
map.put("id","3");
map.put("nw","院方管领导");
list.add(map);
map.put("id","4");
map.put("nw","教学秘书");
list.add(map);
request.setAttribute("testlist",list);
request.setAttribute("aa","2");
%>
<!-- <s:select list="#request.map" label="abc" listKey="key" listValue="value" value="#request.aa" headerKey="0" headerValue="--请选择--"></s:select>
-->
<select name="id">
<s:iterator value="#request.testlist" status="stuts" id="test">
<option value='<s:property value="#test.id" />'><s:property value="#testnw" /></option>
</s:iterator>
</select>
<s:submit value="登陆"></s:submit>
<s:reset value="重置"></s:reset>
所以本人选择例外一种
<div style="background:url(images/07.jpg); width: 1024px; height: 748px;">
<div style="margin-top: 200px"><font size="20" color="#019858" face="华文行楷">中等专业学校信息化平台</font> </div>
<div style="margin-top: 100px">
<s:form action="login">
<hr color="#00FFFF" size="4">
<s:textfield label="管理员编号" name="user.adminId"></s:textfield>
<s:password label="密码" name="user.adminpassword"></s:password>
<s:select list="#{1:'管理员',2:'教研室主任',3:'院方管领导',4:'教学秘书'}" name="user.type" class="login_txt" label="abc" listKey="key" listValue="value" headerKey="0" headerValue="--请选择--">
</s:select>
<s:submit value="登陆"></s:submit>
<s:reset value="重置"></s:reset>
就没错啦。。但是很迷惑怎么取到值根据值来操作
一个方法
public String load() throws Exception{
types=new ArrayList<String>() ;
types.add("学历") ;
types.add("工作") ;
return ActionSupport.SUCCESS ;
}
struts.xml
<action name="basicmessageload" class="basicMessageAction" method="load">
<result>/basicmessage.jsp</result>
</action>
在basicmessage.jsp中:
<s:select list='<s:property value="types"/>' listKey="key"
listValue="value"
name="bm.type"
headerKey="-1" headerValue="请选择"></s:select>
调用过程:
点击一个按钮(load.action),就会进行action中的load方法,成功后跳到jsp中
!-- 使用Struts标签定义复选框集合 -->
<s:set name="hobbies"
value="# {'h001':'篮球','h002':'足球','h003':'乒乓球','h004':'羽毛球','h005':'网球'}">
</s:set>
<!-- 显示复选框集合,list指定加载上面<s:set/>定义的集合,name指定读取和设置person对象的hobby属性 -->
<s:checkboxlist name="person.hobby" list="#hobbies" theme="simple" ></s:checkboxlist>
实体类中定义了一个private String hobby属性,在后台能获得前台所点击选中的选项(注意:选中的选项传到后台
是这样的,比如前台选中的是篮球和足球,那么后台获得的是:h001,h002),这时发现提交貌似是好用的。其实在重新显示的时候就出现问题了,显示的内容没有上次所选中的选项,因为它把我们刚才存储的hobby属性当成value放到<s:selectlist>标签的每个选项里了。恕某不才刚知道<s:selectlist>存储是使用数组的,而我们那个hobby属性是字符串的,所以Struts把选中的所有key排成字符串放到hobby里了,这里就又有问题了,如果是数组的话那么我们把实体类持久化的时候就不行了,数据库里又不能存储数组。于是我就又在实体类中定义了一个private
String[] hobbyArr;属性,把页面也稍做修改让<s:selectlist>的name="person.hobbyArr",然后修改映射文件不去处理实体类的hobbyArr属性,对于hobbyArr的set方法把数组转换成相应的字符串赋值给hobby(如:h001,h002)get方法把hobby的值split(",")赋值给hobbyArr,这样就相当于hobbyArr总是控制数组,hobby总是控制字符串了,这样问题就解决了。
还可以这样
页面中s:select中取listValue的值
JSP页面里的这句代码如下:
<s:select id="dw" name="dw" headerKey="" headerValue="全部" list="datalist" listKey="dw" listValue="dwmc" onchange="document.getElementById('deptname').value=this.value;" />
作用是想把listValue的值同时赋值给名为“deptname”的文本域,但是通过this.value的方法获取的是listKey的值。而我用this.text方法去获取时,却提示undefined。
所以,想问,在this后应该跟什么方法才能获取listValue的值呢?
------解决方案--------------------
$("#XXXX").find("option:selected").text();
这样可以获取选中的listValue
至于LZ上面的写法,LZ自己调试调试