随笔 - 23  文章 - 3  trackbacks - 0
<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿(1)

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜

1。当地址为href="/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取相同名字,则表单上得到的是一个数组。
      <tr>
              <td><input type="checkbox" value="<%=register.getId()%>" id="id"/></td>
               <td><%=register.getName()%></td>
               <td><%=register.getPassword()%></td>
                </tr>

    问题一:表单提交以后,form的对象是什么??
    问题二:如何利用request取到id的值数组??
    问题二的解决方法为将id值用","连成字符串,将字符串传递给action以后再进行分解.具体的解决为:(实现批量删除)
    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));
    }

在这过程中我发现了long和Long的最大差别:Long是serializable类型,并且从string转化的过程也不同.
   long simple = Long.ParseLong(str);
   Long objLong = Long.valueOf(str);

posted @ 2006-04-15 15:34 aimy 阅读(139) | 评论 (0)编辑 收藏

    1。action类中的方法:
            public ActionForward updateRegister(ActionMapping mapping,ActionForm form,HttpServletRequest req,
          HttpServletResponse res)throws Exception{
          MyRegisterInfo register = new MyRegisterInfo();
          MyRegisterActionForm registerForm = (MyRegisterActionForm) form;
          this.beanCopy(register,form);
          MyRegisterService service =  (MyRegisterService) this.getBean("myRegisterService");
          if (service.updateRegister(register))
              {
              PageInfo page = new PageInfo(req.getParameterMap());
              req.setAttribute("registerList",service.listRegister(page));
              return  mapping.findForward("list-ok");

          }
        
  2。sevice中的方法体为
      public boolean updateRegister(MyRegisterInfo myRegisterInfo)
        {
        MyRegisterDAO dao = (MyRegisterDAO) this.getBaseDAO();
        dao.update(myRegisterInfo);
        return true;
    }  
  3。dao中的方法体为
    public void update(Object obj) {
        getHibernateTemplate().saveOrUpdate(obj);
    }
 
  4。因为registerform的类为四个属性的getter和setter
      private String name;
      private String password;
      private String repassword;
      private Long id;
     //一开始因为少了id,从页面上传来的form没有id,调用saveOrUpdate()方法时,hibernate调用的sql语句是insert,而不是update语句,因此页面上原来的行不仅还在,而且还不断有新行增加。
     
 

 

posted @ 2006-04-14 16:16 aimy 阅读(223) | 评论 (0)编辑 收藏

<%@ page contentType="text/html; charset=GBK" %>
<html>
<head>
<script>
     function checkall(all,one)
{

    var obj = document.getElementsByName(one);
    
    if(!obj) return false;
    if(!obj.length&&all.checked) return obj;
    for(var i=0;i<obj.length;i++)
     {
      alert(all.checked);
      obj[i].checked=all.checked
      alert(obj[i].checked);
     }
    return true;
  

     function checkone(obj)
{
 alert('hello');
 alert(obj.name);
 return false;
}
 </script>
</head>
<body bgcolor="#ffffff">
 <form>
  <input type="checkbox" onclick="return checkone(this)" name="mm"/><br>//有return,无法选择这个checkbox
  <input type="checkbox" onclick="checkone(this)" name="mm"/><br>//无论是否返回false,都可以选择这个checkbox
  <input type="checkbox" onclick="checkone(this)" name="mm"/><br>
        <input type="checkbox" onclick="checkall(this,'mm')" name="mmAll"/><br>
    
    </form>
<table border="0">
</table>
</body>
</html>
注意点:
1、双引号里面只能含单引号
2、只有一个对象时,只能用getElementbyId(当id属性没有赋值时,name可以当作id属性),如果是一个数组对象,就要用getElementsByName.比较下面的文件:
function selectAll(obj,flag) {
 if(!obj) {//对象可以是null,但单个对象没有length的属性,所以还要判断length
  return false; 
 }
 if(!obj.length) {//如果是单个对象,不是对象数组
  obj.checked=true;
  return true;
 }
 for(var i=0;i<obj.length;i++) {
  obj[i].checked=flag;
 }
 return true; 
}

/**
* Test selected one item or not
* @author rainshow
*/
function selectOne(obj) {
 if(!obj) {
  return false;
 }
 if(!obj.length&&obj.checked) {
  return obj;
 }
 var count=0;
 var checkedObj;
 for(var i=0;i<obj.length;i++) {
  if(obj[i].checked) {
   checkedObj=obj[i];
   count++;
  }
 }
 if(count==1) {
  return checkedObj;
 }
 return false;
}

2。<a href="http://localhost:8080/myRegister/myRegister.do?method=listRegister&&size=<%=support.getPageSize()%>&&Page=<%=support.getPreviousIndex()%>">上一页</a>
注意点:<%变量%>直接放在“”字符串内,不用连接“+<%变量%>+”
错误做法:<a href="http://localhost:8080/myRegister/myRegister.do?method=listRegister&&size="+<%=support.getPageSize()%>+"&&Page="+<%=support.getPreviousIndex()%>">上一页</a>
3.区别页面的跳转:
定向到其他页面
<script>
location.href("http://localhost:8080/new-register.jsp");
</script>
相当与<%response.sendRedirect("http://localhost:8080/new-register.jsp")%>
而windows.open(“http://localhost:8080/new-register.jsp”)则开出另一个窗口

posted @ 2006-04-13 12:52 aimy 阅读(3657) | 评论 (2)编辑 收藏
仅列出标题
共3页: 上一页 1 2 3