如何获取jsp中单选按钮列表的值

时间:2014-10-26 06:31:27

标签: java jsp

我是JSP的初学者。我正在将一个图像列表从JAVA控制器传递给JSP。在JSP中,我通过迭代列表为列表中的每个图像创建了2个单选按钮。现在,我将如何获得JAVA控制器中每个图像的单选按钮值。

我的JAVA控制器:

String[] imagesList = {"images/team.JPG", "images/team.JPG", "images/team.JPG", "images/team.JPG"};
model.addAttribute("imagesList",imagesList);

我的Jsp:

<c:forEach var="image" items="${imagesList}" varStatus="i">
    <input type="radio" name="${image}" value="${image}"/>Yes
    <input type="radio" name="${image}"  value="${image}"/>No    
</c:forEach>

1 个答案:

答案 0 :(得分:4)

这不可能与您创建的HTML一起使用。假设您在HTML页面中有这样一个单选按钮:

<input type="radio" name="foo" value="bar"/>

如果取消选中收音机并提交表格,则根本不会发送任何参数。

如果选中了广播,并且提交了表单,则会发送参数foo=bar

所以,在你的情况下,你有

<input type="radio" name="${image}" value="${image}"/>Yes
<input type="radio" name="${image}"  value="${image}"/>No   

这意味着(假设图像是“foo”)

  • 如果没有选中收音机,则不会为图像发送参数
  • 如果选中“是”,则会发送参数foo=foo
  • 如果选中“否”,则也会发送参数foo=foo

所以你无法区分Yes和No,因为两个复选框的值都相同。

首先,我不会使用图像路径作为复选框的名称。使用唯一标识图像的ID,不包含必须转义的字符,如/

然后对“是”和“否”使用不同的值:

<input type="radio" name="${image.id}" value="true"/>Yes
<input type="radio" name="${image.id}" value="false"/>No 

然后,您可以遍历所有请求参数并获取其值为true的所有参数:它们的名称是已经检查过Yes的图像的ID。

请注意,对每个图像使用唯一的复选框而不是2个单选按钮更合乎逻辑:

 <input type="checkbox" name="checkedImages" value="${image.id}"/>

通过这样做,你需要做的就是获取名为“checkedImages”的参数的参数值,你将直接得到一个包含所选图像的所有ID的数组。