我是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>
答案 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的数组。