我正在创建一个时间输入系统,用户可以通过两个单独的下拉选择框选择小时和分钟。因此,小时框中包含数字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/