我在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());
我在期待什么
要动态地迭代几个月的集合,您希望将月份存储在Map<Integer, String>其中键是月份数字而值是月份名称的位置。要使HTML <option>元素默认处于选中状态,您需要设置selected属性。
Map<Integer, String>
<option>
selected
因此,假设您在范围内有a Map<Integer, String> months和a Integer selectedMonth,则应执行以下操作:
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
?:
selected``selectedMonth