我正在创建一个程序,首先,使用用户设置的数字,它在屏幕上创建一周中的几天的数组,并带有一个复选框。 ([] 是一个复选框)。
示例:
如果用户选择了数字2,则会出现2行:
第 1 周:星期一[X]星期二[X]星期三[X]星期四[]自由日[]星期六[]星期日[]。
第 2 周:星期一[]星期二[X]星期三[X]星期四[X]自由日[]星期六[]星期日[]
然后,在第二页中,我想显示用户点击的日期。类似这样的事情:
第一周选择的日期:星期一、星期二、星期三。
第二周选择的日期:星期二、星期三、星期四。
但是...通过这段代码,我得到了类似的东西,但我不想要它...:
周:1 - 星期一--
周:2 - 星期二--
周:3 - 星期三--
周:4 - 星期二--
周:5-周三--
周:6 - 星期四--
如何解决?
谢谢你!
if(request.getParameter("number")!=null)
{
String number;
int number2;
number=request.getParameter("number");
number2=Integer.parseInt(number);
out.println("<form action='ex2c.jsp' method='get'>");
String[] dias = {"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
for (int i=0; i<number2; i++)
{
out.print("<br>");
out.println("Week: "+i+1+" - " );
for(int j=0; j<7; j++)
{
out.println("<input type='checkbox' name='check' value='"+dias[j]+"'>"+dias[j]+"</input>");
}
}
out.println("<br><br><input type='submit' name='ok'/></form>");
}
if(request.getParameter("ok")!=null)
{
// String num=request.getParameter("number");
// String [] number;
String [] number = request.getParameterValues("check");
out.println(number.length);
out.println("<br />");
for (int i=0;i<number.length;i++)
{
out.println("<br><br>Week: "+i+1+" - " );
out.println(number[i]+"--");
for(int j=0; j<2; j++)
{
//out.println(number[j]+"--") ;
}
}
}
最佳答案
您以相同的形式发送所有工作日,而不区分星期,您将所有日期放入带有 name="check"
的 input
中,并且您将在 String [] number = request.getParameterValues("check");
中一起接收所有内容。
问题是,您将在 第 1 周
发送星期一、星期二、星期三
,为 发送
因为您正在创建:星期二、星期三、星期四
第 2 周
<form action='ex2c.jsp' method='get'>
<input type='checkbox' name='check' value='Monday'>Monday</input>
<input type='checkbox' name='check' value='Tuesday'>Tuesday</input>
...
<input type='checkbox' name='check' value='Sunday'>Sunday</input>
<input type='checkbox' name='check' value='Monday'>Monday</input>
<input type='checkbox' name='check' value='Tuesday'>Tuesday</input>
...
<input type='checkbox' name='check' value='Sunday'>Sunday</input>
<input type='submit' name='ok'/>
</form>
因此,当您提交此表单时,通过此代码 String [] number = request.getParameterValues("check");
您将得到:["Monday","Tuesday","星期三”,“星期二”,“星期三”,“星期四”]
。
如果您想在第二个 jsp
中显示用户在第一个 jsp
中检查的日期,您必须找到一种方法将日期分组到特定的周并将此信息发送到服务器,以便他们可以区分它。
您可以尝试使用 number
参数将 _number
添加到您的姓名输入中,并使用 表单发送此
根据您的代码检查您需要打印多少周:number
第一个jsp:
if(request.getParameter("number")!=null)
{
String number;
int number2;
number=request.getParameter("number");
number2=Integer.parseInt(number);
out.println("<form action='ex2c.jsp' method='get'>");
// ADDS THE INPUT WITH WEEKS
out.println("<input type='text' name='weeks' value='" + number + "'>");
String[] dias = {"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
for (int i=1; i<=number2; i++)
{
out.print("<br>");
out.println("Week: "+ i + " - " );
for(int j=0; j<7; j++)
{
// ADD THE WEEK NUMBER IN THE NAME
out.println("<input type='checkbox' name='check_" + i + "' value='"+dias[j]+"'>"+dias[j]+"</input>");
}
}
out.println("<br><br><input type='submit' name='ok'/></form>");
}
这样你就可以生成类似的东西:
<form action='ex2c.jsp' method='get'>
<input type='text' name='weeks' value='2'>
<input type='checkbox' name='check_1' value='Monday'>Monday</input>
<input type='checkbox' name='check_1' value='Tuesday'>Tuesday</input>
...
<input type='checkbox' name='check_1' value='Sunday'>Sunday</input>
<input type='checkbox' name='check_2' value='Monday'>Monday</input>
<input type='checkbox' name='check_2' value='Tuesday'>Tuesday</input>
...
<input type='checkbox' name='check_2' value='Sunday'>Sunday</input>
<input type='submit' name='ok'/>
</form>
然后是你的第二个jsp:
if(request.getParameter("ok")!=null)
{
int weeks =Integer.parseInt(request.getParameter("weeks"));
for(int i=1;i<=weeks;i++){
out.println("<br><br>Week: "+ i +" - " );
String [] days = request.getParameterValues("check_"+i);
for(int j=0;i<days.length;j++)
{
out.println(days[j] + " ");
}
out.println("<br />");
}
}
我没有尝试这段代码,但我认为这个想法是可行的。此外,我想评论一下,渲染 jsp
的方式对我来说似乎很奇怪。
希望这有帮助,
关于java - 使用 jsp(java) 数组和复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27026710/