在开发中我们常用到struts2的form表单组件,其中select最常用的写法如下:
<s:select label="对象类型" name="emp.deptId" list="listValues" listKey="oid" listValue="name" headerKey="" headerValue="--请选择--" οnchange="changeHidenValue(this)"></s:select>
当提交表单时,只能在后台获得listKey的值,而无法提交listValue的值。
现有需求同时提交listKey和listValue,解决方法如下:
1、在select的onchange事件函数中,获得option中的text,即listValue。
2、这时,写回到表单的一个隐藏域中。
首先,在<s:select>标签中添加 (οnchange="changeHidenValue(this)")。然后在表单中添加隐藏域<input type=hidden id="deptName" name="emp.deptName" value=""/>。最后写事件绑定函数,如下:
function changeHidenValue(elem){
var optionVal= $(elem).find("option:selected").text(); // 取到选中的listValue(Option)的值
$("#deptName").val(optionVal);
}
点击表单提交测试一下,结果正确!