捕获多个复选框选择JSP参数

时间:2010-03-11 15:47:10

标签: java arrays jsp

我发现这个post显示了如何将多个复选框选择传递给另一个JSP页面,但它对我不起作用。当我尝试获取所选值时,我得到:

选中复选框:[Ljava.lang.String; @ 3f3fbd

这是我的两页(温柔,这是我第一次尝试JSP!)

createSHAREfile.jsp基本上运行查询以查找尚未处理的所有术语,并在其旁边显示每个术语的复选框:

  <title>Create SHARE Files</title>
</head>
<body>
  <jsp:include page="../menu/header.jsp" flush="false" />
  <form name='SelectSHARETerms' method='post' action="SHAREProcessing.jsp">
    <fieldset><legend>Select Terms to Process for SHARE</legend>
    <table align='left'>
    <% String termDetail = "", currDate = "";
       currentDateTime datetime = new currentDateTime();
       datetime.setCurrDate();
       currDate = datetime.getCurrDate();
       java.sql.Date todayDate = java.sql.Date.valueOf(currDate);
       Terms terms = new Terms();
       ArrayList<Terms.termsTable> termsObjList = new ArrayList<Terms.termsTable>();
       terms.setTermsSql("Select * from Terms where TermDate <= '" + currDate + "' AND VoucherProcessDate Is Null");
       boolean indicator = terms.setListOfTerms();
       if (indicator == true) {
         int size = terms.getListSize();
         termsObjList = terms.getTermsList();
         for (int i=0; i<size; ++i) {
           Terms.termsTable eachTerm = (Terms.termsTable)termsObjList.get(i);
           java.sql.Date termDate = eachTerm.TermDate;
     %>         
      <tr><td><input type=checkbox name=SelectedTermDate id='SelectedTermDate<%=i%>' value="<%=i%>"><%=termDate %></td></tr>
    <%
         }
       }
     %>
      <tr><td align='center'><input type='submit' value='Submit'></input></td></tr>
    </table>
    </fieldset>
    </form>
  </body>
</html>

按下提交按钮后,我调用SHAREProcessing.jsp。现在我想在这个页面上做的就是显示用户选择了哪个termdates,这样我就可以将它们用作Java类的参数,这将创建所选术语的文件:

  <title>SHARE Processing</title>
</head>
<body>
<jsp:include page="../menu/header.jsp" flush="false" />
<table width='50%' align='center' border='1'>
 <% String[] SelectedValues = request.getParameterValues("SelectedTermDate");
    System.out.println("checked boxes: " + SelectedValues);
  %>
</body>
</html>

这里是我试图使用其他帖子中显示的代码,但它不起作用:(

感谢您的帮助! 莱斯利

2 个答案:

答案 0 :(得分:3)

您正在尝试使用System.out.println打印整个字符串数组,因此您就可以了。它可能工作正常。

试试这个:

System.out.println("checked boxes:");
for (int i = 0; i < SelectedValues.length; ++i)
  System.out.println("  " + SelectedValues[i]);

另外,我求求你:在业余时间,找出一个现代的Web框架(有数以万计的Java),并努力摆脱在JSP文件中编写Java的痛苦世界。

答案 1 :(得分:1)

您只是面对默认值Object#toString()

要么只是循环并打印每个项目,要么使用Arrays#toString()。这是一个SSCCE

package com.stackoverflow.q2426380;

import java.util.Arrays;

public class Test {

    public static void main(String... args) {
        String[] array = {"foo", "bar" , "waa"};
        System.out.println(array); // [Ljava.lang.String;@addbf1

        String arrayAsString = Arrays.toString(array);
        System.out.println(arrayAsString); // [foo, bar, waa]
    }

}

那就是说,这个问题实际上与JSP无关。这只是一种视图技术。问题在于基本的Java代码 - 你在错误的地方,在JSP文件而不是Java类中编写。我非常赞同在JSP文件中编写原始Java代码是不良做法的评论。 Start learning Servlets