通過將前臺數組拼成字符串傳到後臺,後臺再對這一字符串進行解析。
而不是直接傳一個數組!!
html 刪除
<div class="operation-tool-div">
<el-button size="mini" icon="el-icon-delete" title="刪除" :disabled="deleteDisabled" @click="handleMultiDelete()"></el-button>
</div>
html 多選框
<div class="table-list-div">
<el-table :data="taskTableData" border ref="table" :height="tableHeight" style="width: 100%" @selection-change="changeTaskTableSelect">
<el-table-column type="selection" width="35"></el-table-column>
</el-table>
</div>
js 多選框事件
changeTaskTableSelect(selection){
this.$emit("selectionChange",selection);
if(selection.length>0){
//至少選中一個,刪除按鈕纔可用
this.deleteDisabled = false;
var ids = "";
for(var i = 0; i < selection.length - 1; i++) {
ids += selection[i].id + ",";
}
ids += selection[selection.length - 1].id;
this.selectionIds = ids;
}else{
this.deleteDisabled = true;
}
},
js ajax
handleMultiDelete() {
let _self = this;
commonConfirm.show(commonConfirm.level.warn, jobManagement_I18N.DELETE_AFFIRMED,
function(params) {
_self.showSyncLoading = true;
$.ajax({
url : path + "/test/testAction!removeJobTasks.action",
cache: false,
type : 'post',
data:{
ids : _self.selectionIds
},
success : function(data) {
_self.refreshTable();
_self.showSyncLoading = false;
},
error : function(err) {
}
});
});
},
Action
//這裏的ids和js左側的參數保持一致,js左側參數只表示一個參數名,無需定義
String ids = ServletActionContext.getRequest().getParameter("ids");
if(!StringUtils.isEmpty(ids)){
List<String> idsList = Arrays.asList(ids.split(","));
testService.removeJobTaskByIds(idsList);
}
DAO
final String hql = "delete from JobTask s where s.id in (:ids)";
Query query = createQuery(hql);
query.setParameterList("ids", ids);
query.executeUpdate();