jsp页面中使用ssh框架如何实现复选框全部删除的功能?
例如点击“彻底删除”将所有复选框选中的数据删除,使用SSH框架Jsp页面如何实现。如果点击“彻底删除”是一条记录一条记录删除,还是单独写个方法一块删?如果一块删删除语句如...
例如点击“彻底删除”将所有复选框选中的数据删除,使用SSH框架Jsp页面如何实现。
如果点击“彻底删除”是一条记录一条记录删除,还是单独写个方法一块删?如果一块删删除语句如何写? 展开
如果点击“彻底删除”是一条记录一条记录删除,还是单独写个方法一块删?如果一块删删除语句如何写? 展开
5个回答
展开全部
首先不建议物理删除,最好还是做逻辑删除\x0d\x0a至于取值,例如\x0d\x0aJSP中定义了3个checkbox\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a在action中取值\x0d\x0aString[] strs = request.getParameterValues(“mybox”);\x0d\x0a\x0d\x0a如果要想一起删的话\x0d\x0a首先你复选框的值应该是具体对应数据库实体的ID,或者某一个唯一字段\x0d\x0a删除语句为 DELETE FROM 表名 WHERE 字段 in (之前取到的复选框的值);
展开全部
全选的复选框的id是check_2 下面遍历的复选框的name是checks:
以下是选中所有遍历后的复选框
function checkAll_1(){
var allCheck = document.getElementsByName("checks");
var check_2 = document.getElementById("check_2");
check_2.checked=false;
for(var i=0;i<allCheck.length;i++){
if(document.getElementById("check_1").checked == true){
allCheck[i].checked = true;
}else if(document.getElementById("check_1").checked == false){
allCheck[i].checked = false;
}
}
}
这里是在全部删除这个超链接中写的事件。如<a href="javascript:getIds()">全部删除</a>
function getIds(){
var ids = document.getElementsByName("checks");
var id="";
for(var i=0;i<ids.length;i++){
id += ids[i].value+",";
}
window.location.href="<%=basePath%>message/delete_messageAll.action?ids="+id;
写一个循环删除嘛。再给你补充点Action和Dao里面的代码
这是Action里是:
/**
* 批量删除消息
*/
public String deleteAllMessage(){
String [] idss = ids.split(",");
for(int i=0;i<idss.length;i++){
messageBizImpl.doDeleteMessage(new Integer(idss[i]));
}
return "success";
}
这是Dao里的
public int doDeleteMessage(int id) {
int result = 0;
Session session = null;
try {
session = this.getSession();
session.delete(session.get(Message.class, id));
this.commit(session);
result = 1;
} catch (Exception e) {
this.rollback(session);
result = 0;
e.printStackTrace();
}finally{
this.close(session);
}
return result;
}
小项目这样写就行,不用考虑什么加载速度问题,就是用jdbc写也可以的。建议别用Hibernate了。还是用Ibatis吧。Hibernate有时候报的错让人恶心无语。
以下是选中所有遍历后的复选框
function checkAll_1(){
var allCheck = document.getElementsByName("checks");
var check_2 = document.getElementById("check_2");
check_2.checked=false;
for(var i=0;i<allCheck.length;i++){
if(document.getElementById("check_1").checked == true){
allCheck[i].checked = true;
}else if(document.getElementById("check_1").checked == false){
allCheck[i].checked = false;
}
}
}
这里是在全部删除这个超链接中写的事件。如<a href="javascript:getIds()">全部删除</a>
function getIds(){
var ids = document.getElementsByName("checks");
var id="";
for(var i=0;i<ids.length;i++){
id += ids[i].value+",";
}
window.location.href="<%=basePath%>message/delete_messageAll.action?ids="+id;
写一个循环删除嘛。再给你补充点Action和Dao里面的代码
这是Action里是:
/**
* 批量删除消息
*/
public String deleteAllMessage(){
String [] idss = ids.split(",");
for(int i=0;i<idss.length;i++){
messageBizImpl.doDeleteMessage(new Integer(idss[i]));
}
return "success";
}
这是Dao里的
public int doDeleteMessage(int id) {
int result = 0;
Session session = null;
try {
session = this.getSession();
session.delete(session.get(Message.class, id));
this.commit(session);
result = 1;
} catch (Exception e) {
this.rollback(session);
result = 0;
e.printStackTrace();
}finally{
this.close(session);
}
return result;
}
小项目这样写就行,不用考虑什么加载速度问题,就是用jdbc写也可以的。建议别用Hibernate了。还是用Ibatis吧。Hibernate有时候报的错让人恶心无语。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给每个checkbox一个相同的ID(ID="checkbox")
value=数据的ID(value=${xxx.id})
这么做事因为checkbox只有选中了才会传值
后台拿到checkboxList,对list进行遍历,如果有那个id就代表被选中了
通过id查找对象,删除
value=数据的ID(value=${xxx.id})
这么做事因为checkbox只有选中了才会传值
后台拿到checkboxList,对list进行遍历,如果有那个id就代表被选中了
通过id查找对象,删除
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先不建议物理删除,最好还是做逻辑删除
至于取值,例如
JSP中定义了3个checkbox
<input type="checkbox" name="mybox" value="1" />
<input type="checkbox" name="mybox" value="2" />
<input type="checkbox" name="mybox" value="3" />
在action中取值
String[] strs = request.getParameterValues(“mybox”);
如果要想一起删的话
首先你复选框的值应该是具体对应数据库实体的ID,或者某一个唯一字段
删除语句为 DELETE FROM 表名 WHERE 字段 in (之前取到的复选框的值);
至于取值,例如
JSP中定义了3个checkbox
<input type="checkbox" name="mybox" value="1" />
<input type="checkbox" name="mybox" value="2" />
<input type="checkbox" name="mybox" value="3" />
在action中取值
String[] strs = request.getParameterValues(“mybox”);
如果要想一起删的话
首先你复选框的值应该是具体对应数据库实体的ID,或者某一个唯一字段
删除语句为 DELETE FROM 表名 WHERE 字段 in (之前取到的复选框的值);
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
页面中每个数据的name写成同样的,比如userid,然后Action中定义成private userid[];使用userid.length可以获得数组长度,userid[i]就是第i个
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询