java - 使用 jsp(java) 数组和复选框

标签 java arrays jsp

我正在创建一个程序,首先,使用用户设置的数字,它在屏幕上创建一周中的几天的数组,并带有一个复选框。 ([] 是一个复选框)。

示例:

如果用户选择了数字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/

相关文章:

Java 错误 : Exception in thread "main" java. lang.NoSuchMethodError: main

java - 日历月份和年份之前

java - SonarQube 5.6 是否执行使用 sonar-plugin-api 版本 4.5.2 开发的插件中的装饰器?

c++ - 指针错误导致的段错误(简单...)

javascript - 如何在 .jsp 文件中接收 Ajax 发送的数组

java - 客户端在 websocket 中一段时间​​后自动断开连接

java - jsp中的sql查询放在哪里

java - Java 的正则表达式模式分类?

javascript - AngularJS - ng-repeat array with string index

javascript - 如何从 javascript 对象中获取值的键?