我使用JSP中的以下代码将生日月作为值存储在数据库中。
<select name="birthday_month" id="birthday_month">
<option value="-1">Month</option>
<option value="1">Jan</option>
<option value="2">Feb</option>
...
</select>
在JSP中输出代码以使用我正在使用的JSTL显示以前选择的项目(这是不正确的)
<select name="birthday_month" id="birthday_month">
<c:forEach var="value" items="${birthdaymonth}">
<option value="${birthdaymonth}">${birthdaymonth}</option>
<option value="1">Jan</option>
<option value="2">Feb</option>
...
</c:forEach>
</select>
What I am getting from this code is value like 1 or 2 in select tag
其他信息:
request.setAttribute("birthdaymonth", user.getBirthdayMonth());
我的期待
答案 0 :(得分:6)
要动态迭代几个月的集合,您希望将月份存储在Map<Integer, String>
中,其中键是月份编号,值是月份名称。要默认选中HTML <option>
元素,您需要设置selected
属性。
因此,假设您在范围内有Map<Integer, String> months
和Integer selectedMonth
,那么应该执行以下操作:
<select name="birthday_month">
<c:forEach items="${months}" var="month">
<option value="${month.key}" ${month.key == selectedMonth ? 'selected' : ''}>${month.value}</option>
</c:forEach>
</select>
当?:
等于当前迭代的月份数时,条件运算符selected
将打印selectedMonth
。