使用 JSTL 在 Select 标签中填充所选项目?
我在 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>
我从这段代码中得到的是选择标记中的值,如 1 或 2
其他信息:
- 我存储生日月份作为值,如 1,2,3.. 对于一月,二月,三月...在数据库中
- 我使用
在 Servlet 的请求范围中引入生日月份的值request.setAttribute("birthdaymonth", user.getBirthdayMonth());
我期待什么
- 当我稍后显示 JSP 时,它应该显示以前存储的生日月份为 Jan、Feb、Mar 而不是 1,2, 3 还显示其他选项值,包括突出显示的所选项目。
I store Birthday Month in database as value using following code in JSP.
<select name="birthday_month" id="birthday_month">
<option value="-1">Month</option>
<option value="1">Jan</option>
<option value="2">Feb</option>
...
</select>
Output code in JSP to show previously selected item using JSTL that I am using (which is not correct)
<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
Other Information:
- I store birthday month as value like 1,2,3.. for Jan,Feb,Mar... in Database
- I bring value of birthday month in request scope in Servlet using
request.setAttribute("birthdaymonth", user.getBirthdayMonth());
What i was expecting
- When i show later JSP it should show previously stored birthday month as Jan,Feb, Mar and not 1,2,3 and also show other Option values including selected item as highlighted.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
要动态迭代月份集合,您需要将月份存储在
Map
中,其中键是月份编号,值是月份名称。要使 HTML元素默认处于选中状态,您需要设置
selected
属性。因此,假设您有一个 Map; Months 和范围内的
Integer selectedMonth
,那么应该执行以下操作:条件运算符
?:
将在以下情况下打印selected
:selectedMonth
等于当前迭代的月份数。To dynamically iterate over a collection of months, you'd like to store the months in a
Map<Integer, String>
where the key is the month number and the value is the month name. To make a HTML<option>
element by default selected, you need to set theselected
attribute.So, assuming that you have a
Map<Integer, String> months
and aInteger selectedMonth
in the scope, then the following should do:The conditional operator
?:
will printselected
when theselectedMonth
is equal to the currently iterated month number.