使用JSTL读取动态数组

时间:2014-05-26 09:57:47

标签: java servlets jstl javabeans

我有一张提交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个数字,而不是完整的输入数组。

谢谢!

2 个答案:

答案 0 :(得分:3)

如果您打算在JSP中绘制整个values数组,请尝试以下方法:

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

这适合你吗?

答案 1 :(得分:1)

在使用值填充表单时出错:

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循环通过JSTL c ore在JSP上输出数组:

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