2012-04-09 81 views
1

我一直有问题,从一个.jsp传递参数到另一个。将一些复选框值从一个JSP传递到另一个

我有两个.jsp(1和2)。在1中,我从数据库中获取一些数据并向用户显示一堆复选框(取决于我之前获得的数据)。用户必须检查一个或多个复选框,所选内容将在2中的数据库中删除(类似于“选择要删除的数字”)。

我不知道如何通过选定的复选框和值从1到2. 我试着用javascript/jQuery试图知道如果复选框被选中并且它的值将值添加到隐藏字段并使用2中的请求来获取它。

1.jsp页面

<% 
    HttpSession sesion = request.getSession(); 

    Company company = (Company) sesion.getAttribute("company"); 
    List<Phone> phones = company.getTelefonos(); 
%> 
<form id="formulario" method="POST" action="desMul_Final.jsp"> 
<fieldset> 
    <legend>Numbers</legend> 
    <% 
     Iterator<Phone> it1 = phones.iterator(); 
     while(it1.hasNext()){ 
      Phone t = it1.next(); 
      String number = t.getNumero(); 
    %> 
    <p> 
     <input name=check id="t_<%=number%>" type=checkbox value="<%=number%>" /> <%=number%>. 
    </p> 
    <% 
     } 
    %> 
</fieldset> 
<p class="buttons"> 
    <button type=submit onclick="javascript: pick();">Continue</button> 
</p> 
</form> 

使用Javascript/jQuery的

function pick(){ 
var counter = 0; 
$("#formulario fieldset p").each(function(index){ 
    var field; 
    $(this).children("input").each(function() { 
     if($this.is(':checked')){ 
      field = $(this).val(); 
     } 
    }); 
    index = index + 1; 

    texto = "<input type=hidden name=phone_"+index+" value="+field+" />"; 
    $("#formulario").append(texto); 

    counter = index; 
}); 
cant = "<input type=hidden name=amount id=amount value="+counter+" />"; 
$("#formulario").append(cant); 
} 

2.jsp(这里我只试了才知道,如果我有信息)

<% 
    int amount = Integer.valueOf(request.getParameter("amount")); 
    System.out.println(amount); 

    for(int i = 1; i <= amount; i++){ 
      String s = request.getParameter("phone_"+i); 
     System.out.println(s); 
    } 
%> 

当我尝试访问request.getParameter("amount")时,我得到一个java.lang.NumberFormatException: null,所以我认为我的Javascript/jQuery是错误的。

我该如何解决这个问题?

回答

0

您是否熟悉以客户端方式调试Web应用程序? 可以请插入console.log(“$(”#formulario“)),然后在$(”#formulario“)。append(cant);,后面加一个断点,以查看窗体内容如何改变,以及隐藏的输入加入?的request.getParameter("amount");

+0

对不起,我不熟悉以客户端方式调试Web应用程序,我该怎么做? – Zuazua 2012-04-10 07:44:07

0

使用int[] amount= Integer.ValueOf(request.getParameterValues("amount"));相反,我终于找到了解决方案,我并不需要任何JavaScript。API中的搜索,我发现了请求的方法叫做getParameterNames()返回一个枚举包含此请求中包含的参数名称的字符串对象

而我underneath d当您提交表格时,如果选中该控件,则会发送复选框值。否则,不会发送任何内容。因此,通过这些信息和方法,我改变了复选框的构建方式,并使用枚举来获取值。

BEFORE 
<input name=check id="t_<%=number%>" type=checkbox value="<%=number%>" /> <%=number%>. 

NOW 
<input name="<%=number%>" type=checkbox /> <%=number%>. 

所以在我的第二.JSP我与所选复选框的名字,这是电话号码,一个枚举。

java.util.Enumeration enu = request.getParameterNames(); 
java.util.List<String> numbers = new java.util.ArrayList<String>(); 
while(enu.hasMoreElements()){ 
    String s = (String)(enu.nextElement()); 
    System.out.println(s); 
    numbers.add(s); 
} 
+0

谢谢你的回答,但'amount'是一个数字而不是数组,我的意思是'amount'来自这里''“;'和它只能是被检查的复选框的数量。 如果我使用你的想法,我会得到_Incompatible types_错误消息。 – Zuazua 2012-04-10 07:42:56

相关问题