代理域名续费预警

 

1、form表单数据获得问题:
即:只要是在<form></form>标签里,传递的数据都可以通过form直接获得到,也可以通过request.getParameter("saId");获得到,无论是:隐藏域传的参数、链接传的参数、javascript传递的参数、还是表单里文本框的参数,都可以通过form获得到。
eg:隐藏域:<input type=hidden name=status value="<%=statusShow%>">
 
    链接:<a href="especiallyDestroy.do?method=handle&saId=<%=saId%>">
 
    javascript:
    function dis(saId){
      document.form1.action="especiallyDestroy.do?method=dis&saId="+saId;
      document.form1.submit();
       }
    <input type="button" name="go22" value="作 废" οnclick="dis('<%=saId%>')" >
 
    文本框:
    <td height="25" align="right">客户名称
        <input type="text" name="customerName" value="<%=customerNameWhere%>">
    </td>
注意:如果你想在业务逻辑类里通过form获得传递过来的参数,必须在struts的配置文件里,配置这个参数,否则就会报错,如果你不通过form获得传递过来的参数,而是通过request.getParameter("saId");获得参数,就不用在配置文件中,配置这个参数。
报的错误:java.lang.IllegalArgumentException: Invalid property name 'saId'
 
2、通过javascript实现,批量删除:
       a、首先通过javascript获得复选框的值,这个值是一个String [],这个值就是复选框里,你所选上的。
       b、通过javascript调用Action里的方法,并把这个数组,传递给Action。
       c、在Action里对这个数组做下处理,把数组用","分隔开,然后在Action里做for循环,在for循环里调用app里的方法,也就是当i=2时,把某个id传递给app里的方法,所以说app里的方法接收的参数可以是int或string而不是数组,通过这样的一个for循环,就实现了循环删除,也就是批量删除。其实批量删除并不是一下把所选的都删除了,在后台的实现
是一个一个删除的,这种思想真的挺好!
       d、本人所做模块用到的东西:app里有多个方法,并且接收的参数不止id一个,这时就可以通过用到这个id的一条sql把其他的参数,直接从表里检索出来,再传给接收此参数的方法。这里用到的思想:不是所有后台的参数,都是从页面传递过来的,也可以是从数据库中直接检索出来的。
              eg:当你在Action里调用app里的一个方法时,传递这个方法所需要的参数,而在这个方法里,又调用了app里的另一个方法,这时就可以在调用这个方法之前,通过带id的一条sql把下面这个方法,所需的参数,直接从数据库中检索出来。
       javascript:
 
       function del(){
       var flag = "false";
       var str = "";
       if(document.form1.sel==undefined)
       {
              alert("您没有要操作的信息!");
              return false;
       }
       else
       {
              if(document.form1.sel.length == undefined)
              {
                     if(document.form1.sel.checked==false)
                     {
                            alert("请选择要操作的信息!");
                            return false;
                     }
                     else
                     {
               document.form1.action = "agentDomainAddYuJing.do?method=dis&arry="+document.form1.sel.value;
              document.form1.submit();
                     }    
              }
              else
              {
             
                     for(var i=0;i<document.form1.sel.length;i++)
                     {    
                    
                            if(document.form1.sel[i].checked == true)
                            {
                                   if(str=="")
                                   {
                                          str = document.form1.sel[i].value;
                                   }
                                   else
                                   {
                                          str = str+","+document.form1.sel[i].value;
                                   }
                                   flag = "true";
                            }
                     }
                     if(flag =="false")
                     {
                            alert("请选择要操作的信息!");
                            return false;
                     }
               document.form1.action = "agentDomainAddYuJing.do?method=dis&arry="+str;
              document.form1.submit();
              }
       }
}
function submitform(){
       document.all("jumpPage").value = 1;
       return true;
}
 
<input name="sel" type="checkbox" class="noborder " value="<%=domainRegId%>">
 
       Action里的for循环:
      
       for(int i=0;i<id.length;i++){
                    
                     b = app.deleteSave(agentDomainAddYuJingForm, id[i]);
                     if(b==false){
                            System.out.println("删除域名时"+id[i]+"出错");
                            break;
                     }
              }
 
3、隐藏域传值问题:
       特批单作废模块:当你点某条记录的处理时,把这条记录的id传给后台Action里的方法,那么你怎么知道这个id就是你所点"处理"的那条记录的id呢?看下面的代码:
       ArrayList list=(ArrayList)pageBean.getNewData();
              for(int i=0;i<list.size();i++){
                     DBRecord dbr=(DBRecord)list.get(i);
                     String saId = dbr.getField("SPECIAL_APPLICATION_ID")==null?"":dbr.getField("SPECIAL_APPLICATION_ID").toString();
 
                     }
              解释:首先获得当前页面的数据,通常是10条,之后是做for循环输出数据。把数据库对应的一条数据封装到DBRecord这个对象里。当i=0时,获得的就是第一条记录,而此时的id就是第一条记录的id,所以当你点第一个"处理"时,就把这个id传递给了后台的方法。其实上,当页面上已经列出每条记录时,每条记录的id就是固定的了,这个通过for循环就能实现,而当你点某条记录的处理时,就把这条记录的id传递给后台的业务逻辑方法。
 
              隐藏域解释:当id=0时,把id为0的数据库的相关信息检索出来,此时,假如:"作废"这个方法需要接收一个"客户名称"这个参数,在especiallyDestroySearchApply.jsp页面里这里我们通过隐藏域,把"客户名称"这个属性传递给Action里的方法,传递的就是id为0这条记录的"客户名称"。如果在这个especiallyDestroySearch.jsp页面里,通过隐藏域传递"客户名称",给后台的Action,此时Action里接收的,不知道是哪条记录的"客户名称",也就是不知道跟哪个id相对应。
 
              我的错误:我在"代理域名续费预警"模块中,就犯了上面的错误,后台方法里需要接收domainName和type两个参数,我就在jsp页面里,直接通过隐藏域传递给后台,结果在后台把两个参数打印出来,发现传递的参数始终是页面显示的第一条记录的domainName
和type,当你选其他记录删除时,传递的还是第一条记录的,出现的就是这样的问题。
 
                      解决办法:通过javascript把所选记录的id数组,传递到Action里,然后在Action里做一个for循环,在for循环里调用app里的业务逻辑方法,根据id,用一条sql把业务逻辑方法需要的domainName和type直接从数据库中检索出来,传递给业务逻辑方法。
 
4、查询问题:问题所在:就是在第一次默认查询时,传递一个jumpPage参数即可,当调用查询的方法时,不用再传递此参数。
            不理解:a、为什么我在查询里,传递了一个jumpPage参数,会影响分页呢?,可能就是因为往pageBean里传了两次jumpPage。
                   b、存储过程只需要编译一次,那么它第一次取出来的数据放在什么地方了呢?缓存?,我第二次调用存储过程,从哪取的数据呢??
5、页面参数保留问题:
       <td width="48%" height="35" align="right">域名名称
            <input type="text" name="domainName" value="<%=domainName1%>">
       </td>
 
       注:其实很简单,只要添加一个value属性就可以了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值