Spring JSP 选择数字范围列表

标签 spring jsp select

我正在创建一个时间输入系统,用户可以通过两个单独的下拉选择框选择小时和分钟。因此,小时框中包含数字1-12,分钟框中包含00-59

这是 Spring 2.5 Java EE 项目的一部分。

例如,我的 JSP 中有这个,用于创建选项值作为选择下拉列表的一部分:

<% for( int i=1; i<=12; i++) { %>
<option value="<%=i %>" <%= Integer.parseInt(time1fromHr)==i?selected:"" %> />
<% } %>

for 循环生成所有小时并将当前选定的小时标记为默认值。好吧,它对我来说看起来相当丑陋,主要是因为这里涉及相当多的 Java 代码,我想知道是否有一个更优雅的解决方案来使用 JSP 标签或 Spring 库来解决这个问题。我通过 Spring 中的 ModelAndView 对象传入当前设置的参数。

最佳答案

在您的模型中,您可以传递一个整数列表几个小时,另一个几分钟。然后你可以使用 form:select 标签。

<form:select path="hour">
  <form:options items="${hours} />
</form:select>

如果表单的命令对象在“小时”值中设置了选定值,并且模型的“小时”值中包含 1-12,那么它应该呈现选择并负责标记适当的选项已选择。然后你做同样的事情几分钟。

如果您不想采用 spring 表单 taglib 方向,您可以再次将小时放入模型中并使用 JSTL。像这样的东西:

<c:forEach var="hour" items="${hours}">
  <c:if test="${hour} == ${selectedHour}">
    <option value="${hour}" selected="selected">${hour}</option>
  </c:if>
  <c:if test="${hour} != ${selectedHour}">
    <option value="${hour}" >${hour}</option>
  </c:if>
</c:forEach>

我知道有更好的方法来完成 c:if 部分,也许使用 c:choose,但你明白了要点。您可以在 selectedHour 中选择值,并在模型中以小时为单位进行选择。

关于Spring JSP 选择数字范围列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10306849/

相关文章:

java - servlet 和 web 服务之间的区别

spring - 设置Spring任务的线程池名称

java - 如何在spring中创建postmapping方法,以便客户端只需要输入部分对象而不是完整对象?

java - tld 文件中的堆栈

mysql - 按月和年分组,从另一个表中计数

java - 为什么在 applicationContext.xml 中不接受 tomcat 的 -D 参数?

java - JSP 和 mysql 抛出 java.lang.classNotFoundException :com. mysql.jdbc.driver

java - JSP 页面和 mysql 数据库连接在未知时间后断开(大约 2 天)

MySQL - 需要字符串中最大匹配字母的搜索结果

cocoa - 在 NSTableView 中将所选行设为粗体