【问题标题】:Read Dynamic array with JSTL使用 JSTL 读取动态数组
【发布时间】:2014-07-15 01:47:37
【问题描述】:

我收到了一个提交 6 个数字的表单。他们有相同的名字。

        <TD><INPUT TYPE=TEXT NAME=valores VALUE="${bean.values}" maxlength=2></TD>
        <TD><INPUT TYPE=TEXT NAME=valores VALUE="${bean.values}" maxlength=2/></TD>
        <TD><INPUT TYPE=TEXT NAME=valores VALUE="${bean.values}" maxlength=2/></TD>
        <TD><INPUT TYPE=TEXT NAME=valores VALUE="${bean.values}" maxlength=2/></TD>
        <TD><INPUT TYPE=TEXT NAME=valores VALUE="${bean.values}" maxlength=2/></TD>
        <TD><INPUT TYPE=TEXT NAME=valores VALUE="${bean.values}" maxlength=2/></TD>

我在 Servlet 中这样接收它们:

String[] values= request.getParameterValues("values");  
        for(int i = 0; i < values.length; i++)
        {
            hello.setValues(values[i]);
        }

        request.setAttribute("bean", hello);
        request.getRequestDispatcher("/Test.jsp").forward(request,response);    
    }

它们现在在 Bean 类中,我使用 setValues 来设置它们。

我想做的就是在表格上收到相同的数字。我使用了${bean.values},但我得到了 1 个重复的数字,而不是完整的输入数组。

谢谢!

【问题讨论】:

  • 你重复获取的一个数字,这是你表单上文本框的最后一个数字吗?
  • 所有分配了相同的值${bean.values} 以及相同的名称。为什么?
  • @Ashish 是最后一个数字。
  • @Braj 因为我想制作一个对列和行求和的动态表。然后我得到了一个 tr values0, values1.. etc
  • 这是你的情况jsp -&gt; servlet 的流程吗?请确认。

标签: java servlets jstl javabeans


【解决方案1】:

如果您打算在 JSP 中绘制整个值数组,请尝试以下操作:

<c:forEach var="value" items="${bean.values}"> 
   <td><input type="text" name="valores" value="${value}" maxlength="2"></td>
</c:forEach>

这适合你吗?

【讨论】:

    【解决方案2】:

    您在填写表单时犯了一个错误:

    String[] values= request.getParameterValues("values"); // assuming 6 values
    for(int i = 0; i < values.length; i++) // do 6 iterations
    {
      hello.setValues(values[i]); // I guess #setValues is expecting an array of values
    }
    

    所以您的代码应该输出 RequestParameter 数组“值”的最后一个数字。但是你想显示整个数字数组,所以你的代码必须看起来更像这样:

      String[] values= request.getParameterValues("values"); // Receive the array from the request
      hello.setValues(values); // Add the whole array to the bean
    

    根据 Jorge_B 的回答,您可以使用 forEach 循环通过 JSTLcore 在 JSP 上输出数组:

    <c:forEach var="value" items="${bean.values}"> 
       <td><input type="text" name="valores" value="${value}" maxlength="2"></td>
    </c:forEach>
    

    【讨论】:

    • 在同一个 JSP 中可以做到这一点吗?设置默认值,如 1、2、4、5、6,然后将它们发布到 servlet,在 bean 中设置值并在同一个 JSP 中再次接收它们?
    猜你喜欢
    • 1970-01-01
    • 2011-11-29
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多