使用jstl在JSP中预填充下拉列表

时间:2013-02-18 06:48:06

标签: java jsp jstl

我有一个JSTL标记,通过从20到60运行填充Age下拉

<c:forEach begin="20" end="60" var="i">
   <option value="${i}">${i}</option>
</c:forEach>

现在处于编辑模式,我想用年龄来自db table

填充年龄

假设年龄为25岁,那么应该在年龄dd中选择25岁。我尝试了一段代码,但这不起作用并显示jspTagexception

<c:forEach begin="20" end="60" var="i">
 <option value="${i}" <c:when test ="${User.age == i}">selected</c:when>>${i}</option>
</c:forEach>

如何在选择下拉菜单中预先填充年龄。

感谢回复

enter image description here

3 个答案:

答案 0 :(得分:1)

试试这个:

<c:if test="${User.age == i}"> selected="selected" </c:if>

确保将User对象从控制器传递给jsp。

答案 1 :(得分:1)

使用错误标签,何时应与选择一起使用。请参阅此说明:


作为Java switch语句的工作原理,它允许您在许多替代方案之间进行选择。如果switch语句具有case语句,则标记具有标记。一个switch语句有default子句来指定默认操作,类似的方式有default子句。


您可以使用if:

<c:forEach begin="20" end="60" var="i">
 <option value="${i}" <c:if test ="${User.age == i}">selected</c:if>>${i}</option>
</c:forEach>

答案 2 :(得分:1)

您可以在其中使用Conditional operator,而不是<c:when>标记(仅与<c:choose>标记一起使用):

   
<c:forEach begin="20" end="60" var="i">
    <option value="${i}" ${User.age == i ? 'selected' : ''}>${i}</option>
</c:forEach>