方式一:
Jsp中:
case "delete":
$.ligerDialog.confirm[d1] ('确定删除?', function (y)
{
if (!y) return;
f_handle[d2] [d3] ("this.customid","cusinformation!delete.action");
});
break;
//获得选中的行
function getSelectIds(){
var rowsdata = gridManager.getCheckedRows();
if (!rowsdata.length)
{
$.ligerDialog.alert('请先选择行!');
return;
}
var idStr = "";
$(rowsdata).each(function (i, item)
{
idStr += this.customid;
if (i < rowsdata.length - 1) idStr += ",";
});
[d4] return idStr;
}
Action:
private String ids;
…
@Override
@SysLogAnnotation(moduleId = 1001)
public String delete() throws Exception {
JSONObject result = new JSONObject();
try {
if (ids != null) {
String[] idArray = ids.split(",");[d5]
for (String tmp : idArray[d6] ) {
cusInfoManager.logicDelete(StringValueUtils.getLong(tmp));
}
result.put("flag", true);
} else {
result.put("flag", false);
result.put("errormsg", "没有选择客户记录");
}
} catch (Exception e) {
result.put("flag", false);
logger.error("删除客户出错", e);
throw e;
}
Struts2Utils.renderText(result.toString());
return NONE;
}
Service:
/**
* 逻辑删除客户
* @param id
*/
public void logicDelete(Long id){
CusInformation entity=cusInfoDao.get(id);
entity.setStatus(2);[d7]
cusInfoDao.save(entity);
}
Dao:
方式二:不允许删除初始化数据
Jsp:
case "delete":
//暂时这样控制初始化数据不允许删除
var rowsdata = gridManager.getCheckedRows();
var flag=false;
$(rowsdata).each(function(){
if(f_initdata(this.tagid)){
flag=true;
return;
}
});
if(flag){
$.ligerDialog.warn("初始化数据不允许删除");
return;
}
$.ligerDialog.confirm('确定删除?', function (y)
{
if (!y) return;
f_handle("this.tagid","custag!delete.action");
});
break;
/**
* 暂时这样控制初始化数据不允许删除
* @param {Object} id
* @return {TypeName}
*/
function f_initdata(id){
if(parseInt(id)<100){
return true;
}else{
return false;
}
}
Action:
@Override
@SysLogAnnotation(moduleId=1003)
public String delete() throws Exception {
// TODO Auto-generated method stub
JSONObject result = new JSONObject();
int retFlag=0;
try{
if(ids!=null){
String[] idArray=ids.split(",");
List<Long> idList=new ArrayList<Long>();
for(String tmp:idArray){
//cusTagManager.delete(StringValueUtils.getLong(tmp));
idList.add(StringValueUtils.getLong(tmp));
}
retFlag=cusTagManager.delete(idList);
if(retFlag==0){
result.put("flag", true);
}else{
result.put("flag", false);
result.put("errormsg", "标签有关联的客户,不允许删除");
}
}else{
result.put("flag", false);
result.put("errormsg", "id为空");
}
Struts2Utils.renderText(result.toString());
}catch(Exception e){
result.put("flag", false);
result.put("errormsg", "操作异常");
Struts2Utils.renderText(result.toString());
logger.error("删除客户标签出错", e);
throw e;
}
return NONE;
}
Service:
/**
* 判断标签是否关联了客户,如果关联了客户则不允许删除
* @param ids
* @return 0:成功删除,1:有关联的客户
*/
public int delete(Collection<Long> ids){
CusTag entity=null;
for(Long id:ids){
entity=cusTagDao.get(id[d8] );
if(entity.getCustomListR3[d9] ().size()>0){
return 1;
}
}
for(Long id:ids){
cusTagDao.delete(id);
}
return 0;
}
Dao:
方式三:有关联不能删
分析逻辑:
1, 要分两次进入action,当点击删除的时候在jsp页面利用ajax请求进action得到一个list集合返回jsp页面
2, 在jsp页面需要对返回函数进行处理,如果list不为0,则说明根据分类classid查到了下面的实体类,这说明关联了,所以这个classid是不可以删除的。
3, 这时就return“”;,否则进else。把删除方法放在else里面。
Jsp:
{ text: '删除', click:f_delete, id:"delete", img: ""+ctx+"/js/images/page_delete.png" }
function f_delete(){
$.ligerDialog.confirm('确定删除?', function (y)
{
if (!y) return;
var rowsdata = gridManager.getCheckedRows();
if (!rowsdata.length)
{
$.ligerDialog.alert('请先选择行!');
return;
}
var idStr = "";
$(rowsdata).each(function (i, item)
{
idStr += eval(this.newsclassid);
if (i < rowsdata.length - 1) idStr += ",";
});
if (idStr == "")
{
$.ligerDialog.alert('没有可以操作的数据!');
return;
}
while (idStr.indexOf(",,") > -1) idStr = idStr.replace(",,", ",");
if (idStr.lastIndexOf(",") == idStr.length - 1) idStr = idStr.substring(0, idStr.length - 1);
var paramUrl="ids="+idStr;
$.post("newsissueclassify!checkNewsclassidIsUse.action",paramUrl,function(data[d10] ){
if(data != ""){
$.ligerDialog.alert(data+'分类下还存在新闻线索,不可删除');
}else{
f_handle("this.newsclassid","newsissueclassify!delete.action");
}
});
});
}
Action:
/**
* 删除时检查分类ID是否被使用
*
* @return
*/
public String checkNewsclassidIsUse[d11] () {
List<Long> unDelList = new ArrayList<Long>();
if (ids != null) {
String[] idArray = ids.split(",");
List<Long> idList = new ArrayList<Long>();
for (String tmp : idArray) {
idList.add(StringValueUtils.getLong(tmp));
}
unDelList = manager.checkNewsclassidIsUse(idList);
}
if (unDelList.size() != 0) {
String result = "";
for (Long unDelId : unDelList) {
result += unDelId + ",";
}
if (result.lastIndexOf(",") == result.length() - 1) {
result = result.substring(0, result.length() - 1);
}
Struts2Utils.renderText(result);
}
return NONE;
}
@Override
@SysLogAnnotation(moduleId = 7002, entityId = "newsclassid", paramId = "newsclassid")
public String delete() throws Exception {
JSONObject result = new JSONObject();
try {
if (ids != null) {
String[] idArray = ids.split(",");
List<Long> idList = new ArrayList<Long>();
for (String tmp : idArray) {
idList.add(StringValueUtils.getLong(tmp));
}
int flag = manager.deleteMultiNewsIssueClassify[d12] (idList);
if (flag == 0) {
result.put("flag", true);
} else if (flag == 1) {
result.put("flag", false);
result.put("errormsg", "删除失败");
}
}
IOUtils.pageWriter(Struts2Utils.getResponse(), result.toString());
} catch (ServiceException e) {
logger.error(e.getMessage(), e);
result.put("flag", false);
result.put("errormsg", "删除失败");
IOUtils.pageWriter(Struts2Utils.getResponse(), result.toString());
}
return NONE;
}
Service:
public List<Long> checkNewsclassidIsUse(List<Long> ids) {
List<Long> unDelIdList=new ArrayList<Long>();
for(Long id:ids){
if( newstipsdao.findBy("classid", id)[d13] .size()!=0){
unDelIdList.add(id);
}
}
return unDelIdList;
}
public int deleteMultiNewsIssueClassify(List<Long> ids) {
int flag=1;
for(Long id:ids){
//初始化固定id不可删除
if(id>6){
dao.delete(id);
flag=0;
}
[d14] }
return flag;
}
Dao:
[d1]Confirm框,是有确定和删除按钮的对话框
[d2]为什么要用f_handle?
还有this.customid如何获得的?
[d3]url请求
[d4]拼一个字符串
Eg:1,2,3,
[d5]把传过来的ids一逗号分隔
[d6]逐个遍历删除
[d7]业务逻辑,没真正从数据库删,只是改变了他的状态。并且save一哈。
[d8]继承的curd里面就有get()方法,表示根据id获得对应的实体类
[d10]如果返回的data不为空,即根据ids返回
先调用该方法,检查分类id是否被占用。
[d12]没有关联则可以删除
[d14]只能删除大于6的。
因为在表的设计中,0——6是固定初始化数据。