首先说明一下情况,表单提交时需要获取表单外的列表中复选框被选中的情况,在不使用AJAX,即保存表单提交事件的前提下,需要正确地将表单外被选中复选框的值传递到java的后端。
思路是在表单中设置隐藏的表单域元素,再在表单外元素上设置监听,当事件发生时,JS修改表单内对应的隐藏域元素的值,最后提交事件时会将具有名称属性的隐藏域一并提交。
<! - html - >
<form id =“search-form”action =“comentator / exportOut”method =“post”onsubmit =“return downloadFileSubmit()”>
<! - 其他元素 - >
<! - 用于临时存储复选框选中情况的div - >
<div id =“selectedUserDiv”> </ div>
<button id =“exportOut”type =“submit”> </ button>
</ FORM>
<! - 表单外的复选框们 - >
<input value =“1”type =“checkbox”name =“chked”/>
<input value =“2”type =“checkbox”name =“chked”/>
<input value =“3”type =“checkbox”name =“chked”/>
// JS
function downloadFileSubmit(){
var thisHtml =“”;
var obj = document.getElementsByName(“chked”); //获取表单外复选框
for(var i = 0; i <obj.length; i ++){
如果(OBJ [I] .checked){
thisHtml = thisHtml +'<input hidden =“hidden”name =“checkedUser”value =“'+ obj [i] .value +'”type =“checkbox”checked =“checked”>';
}
}
document.getElementById(“selectedUserDiv”)。innerHTML = thisHtml;
返回true;
}
// java的
@RequestMapping("submit")
public void exportOut(HttpServeltRequest request){
String [] checkedValue = request.getParameterValues(“checkedUser”);
// ....处理
}