我的要求是
我将有一个JSP,其中将显示该特定用户的电子邮件
用户可以选择要删除的邮件
点击删除按钮后,必须捕获复选框的ID(用户选择删除),并将其提供给服务器,服务器依次通过运行HQL删除它
< / LI> 醇>目前正在通过使用管道符号连接ID并将其作为单个字符串对象发送到查询字符串中来处理此问题,并在服务器端使用标记化ID并在迭代中删除它
下面是jquery脚本,其中使用管道符号
连接ID$("#deleteBtn").click(function() {
var deleteIDList = "" ;
$("[name='deleteCheckboxGroup']").each(function() {
if($(this).is(':checked')) {
var chckId = $(this).attr("id") ;
deleteIDList+=chckId.split("_")[0] +"|";
}
});
if (deleteIDList!="") {
// to remove pipe symbol from the last character, we are using 'slice' method of javascript
deleteIDList = deleteIDList.slice(0,-1) ;
var actionUrl = "deleteMessageText.htm?messageIDs="+deleteIDList ;
$("#studentMessFrm").attr("action",actionUrl) ;
$("#studentMessFrm").submit() ;
}else {
return false ;
}
}) ;
这就是我如何从DB中标记和删除对象
public void deleteMessages(String messageIDs) throws ReadsException{
//List<Long> deletedIdList = new ArrayList<Long>() ;
StringTokenizer stringTokenizer = new StringTokenizer(messageIDs,"|") ;
Map<String,Object> parameterMap = null ;
while (stringTokenizer.hasMoreTokens()) {
String query = "DELETE FROM MESSAGES MES WHERE MES.MESID=:MESID";
parameterMap = new HashMap<String,Object>();
parameterMap.put("MESID", Long.valueOf(stringTokenizer.nextToken()));
executeUpdateOrDelete(query, parameterMap);
}
LOGGER.info("deleted successfully..");
}
我知道这是非专业的编码类型。我希望将id列表传递给requestParam中的MVC控制器,然后在“ONE SHOT”中删除列表ID。
请建议我这个。感谢
此致 阿伦
答案 0 :(得分:2)
实现这一目标的方法有很多种。我最喜欢的是在不需要的时候最小化Javascript的使用。以下是我要做的事情:
HTML表单:
<form action="message/delete" method="POST">
<input type="checkbox" name="messageId" value="7" />Hi!<br/>
<input type="checkbox" name="messageId" value="33" />It's me!<br/>
</form>
Spring控制器:
@RequestMapping("message/delete")
public void deleteMessages(Long[] messageId) {
messageRepository.delete(messageId);
}
JPA存储库:
public void delete(Long... ids) {
if (ids.length > 0) {
entityManager.createQuery("DELETE FROM Message WHERE id IN :id").setParameter("id", ids).executeUpdate();
}
}