使用 JSTL 在 Select 标签中填充所选项目?

发布于 2024-11-09 00:39:57 字数 1040 浏览 0 评论 0原文

我在 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. 我存储生日月份作为值,如 1,2,3.. 对于一月,二月,三月...在数据库中
  2. 我使用
    在 Servlet 的请求范围中引入生日月份的值 request.setAttribute("birthdaymonth", user.getBirthdayMonth());

我期待什么

  1. 当我稍后显示 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:

  1. I store birthday month as value like 1,2,3.. for Jan,Feb,Mar... in Database
  2. I bring value of birthday month in request scope in Servlet using
    request.setAttribute("birthdaymonth", user.getBirthdayMonth());

What i was expecting

  1. 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

沩ん囻菔务 2024-11-16 00:39:57

要动态迭代月份集合,您需要将月份存储在 Map 中,其中键是月份编号,值是月份名称。要使 HTML 元素默认处于选中状态,您需要设置 selected 属性。

因此,假设您有一个 Map; 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>

条件运算符 ?: 将在以下情况下打印 selectedselectedMonth 等于当前迭代的月份数。

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 the selected attribute.

So, assuming that you have a Map<Integer, String> months and a Integer selectedMonth in the scope, then the following should do:

<select name="birthday_month">
    <c:forEach items="${months}" var="month">
        <option value="${month.key}" ${month.key == selectedMonth ? 'selected' : ''}>${month.value}</option>
    </c:forEach>
</select>

The conditional operator ?: will print selected when the selectedMonth is equal to the currently iterated month number.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文