隨筆 - 23  文章 - 3  trackbacks - 0
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(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 閱讀(143) | 評論 (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 閱讀(241) | 評論 (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 閱讀(3658) | 評論 (2)編輯 收藏
          僅列出標題
          共3頁: 上一頁 1 2 3 
          主站蜘蛛池模板: 昌邑市| 丰镇市| 衡阳市| 阿鲁科尔沁旗| 开阳县| 泰州市| 杂多县| 成武县| 平江县| 民勤县| 宣武区| 绥中县| 桦川县| 阳东县| 新乡市| 临朐县| 鹰潭市| 绥中县| 云龙县| 曲靖市| 云和县| 大厂| 治县。| 霸州市| 淮阳县| 松阳县| 澄江县| 齐齐哈尔市| 彭水| 滨海县| 南川市| 迁西县| 安福县| 盐边县| 略阳县| 特克斯县| 淮南市| 商水县| 辉县市| 安庆市| 宝山区|