将一些复选框值从一个JSP传递到另一个JSP

时间:2012-04-09 16:37:21

标签: javascript jquery 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是错误的。

我该如何解决这个问题?。

3 个答案:

答案 0 :(得分:0)

您熟悉以客户端方式调试Web应用程序吗? 你能否插入console.log(&#34; $(&#34;#formulario&#34;))然后在$(&#34;#formulario&#34;)。append(cant);,之后插入一个断点看看表单的内容是如何变化的,以及是否添加了隐藏的输入?

答案 1 :(得分:0)

使用int[] amount= Integer.ValueOf(request.getParameterValues("amount"));代替request.getParameter("amount");

答案 2 :(得分:0)

好吧,我终于找到了解决方案,我不需要任何Javascript。在API中搜索我发现了一个名为getParameterNames()的请求方法,返回一个String对象的枚举,其中包含此请求中包含的参数的名称

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

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

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

所以在我的第二个.jsp中,我得到一个Enumeration,其中包含所选复选框的名称,即电话号码。

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);
}