我一直在将参数从一个.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 :(得分: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);
}