1。當(dāng)?shù)刂窞閔ref="/myRegister/myRegister.do?method=listRegister&&size=10&&&start=5"
?? 可以通過下面方法分別取到size&&start:
????Map?requestMap = request.getParameterMap();
????String ?size = requestMap.get("size");
??? String start =requestMap.get("start");
2。checkbox取相同名字,則表單上得到的是一個數(shù)組。
????? <tr>
??????????????<td><input type="checkbox" value="<%=register.getId()%>" id="id"/></td>
???????????????<td><%=register.getName()%></td>
???????????????<td><%=register.getPassword()%></td>
??????????????? </tr>
??? 問題一:表單提交以后,form的對象是什么??
????問題二:如何利用request取到id的值數(shù)組??
????問題二的解決方法為將id值用","連成字符串,將字符串傳遞給action以后再進行分解.具體的解決為:(實現(xiàn)批量刪除)
??? delete.jsp:
<%@page import="com.xindeco.core.pagination.PaginationSupport" %>
<%@page import="com.xindeco.myregister.pojo.MyRegisterInfo"%>
<%
?? PaginationSupport support = (PaginationSupport)request.getAttribute("registerList");
? ?List registerList=support.getItems();
??? %>
<script>
function concatValue(obj,delimiter) {//將id用,串成string
?????if(!obj) {
??????? ??return false;
??? ?}
???? if(!obj.length&&obj.checked) {
??????????return obj.value;
??? ?}
??? ?var str='';
??? ?for(var i=0;i<obj.length;i++) {
?????? ??if(obj[i].checked) {
?????? ????? ?str=str+obj[i].value;
?????? ????? ?str=str+delimiter;
?? ? ??? }?
??? ?}
???? if(str.length>0) {
?????? ??return str.substring(0,str.length-1);
??? ?}
???? return str;?????
?}
?function dele(obj)
?{
??? ?var str = concatValue(obj,',');
??? ?location.href('/myRegister/myRegister.do??? method=deleteRegister&&ids='+str);
??}
</script>
<html ><head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
</head>
<body>
??? <form action="/myRegister/myRegister.do?method=listRegister">
??????? <table id="detailTable" width="100%" border="0" >
????????????? <tr>
????????????? <td></td> <td>姓名</td><td>password</td>
????????????? </tr>
?????????? <%
?????????? for(int i=0;i<registerList.size();i++)
?????????? {
?????????????? MyRegisterInfo register= (MyRegisterInfo) registerList.get(i);
?????????? %>
????????????? <tr>
????????????????? <td><input type="checkbox" value="<%=register.getId()%>" id="id"/></td>
????????????????? <td><%=register.getName()%></td>
????????????????? <td><%=register.getPassword()%></td>
????????????????? </tr>
?? <% }%>
?? ????? <tr><td><input type = "button" onclick="dele(document.getElementsByName('id'))" value="刪除"></input></td></tr>
??????? </table>
??? </form>
</body>
</html>
action中的方法:
????? String ids = req.getParameter("ids");
????????? String[] idList = ids.split(",");
????????? if(idList!=null){
????????????? Long[] idLong = new Long[idList.length];
????????????? for (int i = 0; i < idList.length; i++) {
????????????????? idLong[i] = Long.valueOf(idList[i]);
????????????? }
????????? if(service.deleteRegister(idLong)) return mapping.findForward("success");
????????? }
其中deleteRegister的方法體為:
public boolean deleteRegister(Long[] ids)
??? {
?????? MyRegisterDAO dao = (MyRegisterDAO) this.getBaseDAO();
?????? for(int i=0;i<ids.length;i++) {
??????????? dao.remove(MyRegisterInfo.class,ids[i]);
??????? }
??????? return true;
??? }
dao.remove的方體為
?? public void remove(Class clazz, Serializable id) {
??????? getHibernateTemplate().delete(get(clazz, id));
??? }
在這過程中我發(fā)現(xiàn)了long和Long的最大差別:Long是serializable類型,并且從string轉(zhuǎn)化的過程也不同.
?? long simple = Long.ParseLong(str);
?? Long objLong = Long.valueOf(str);