1

我在将参数从一个 .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 是错误的。

我该如何解决这个问题?

4

3 回答 3

0

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

于 2012-04-09T17:02:04.363 回答
0

使用int[] amount= Integer.ValueOf(request.getParameterValues("amount"));而不是request.getParameter("amount");

于 2012-04-09T20:06:38.190 回答
0

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

而且我知道,当您提交表单时,如果选中控件,则会发送复选框值。否则,不会发送任何内容。所以有了这些信息和方法,我改变了复选框的构造方式,并使用枚举来获取值。

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);
}
于 2012-04-10T14:16:22.810 回答