Jsp 正在创建注册页。获取日期时遇到问题
我已经创建了一个注册页面,在那里我从持卡人那里获取了一些关于该卡的详细信息。 当我从用户处获取月份和日期时,所选日期会自动显示在下拉框中。这会使同一日期显示两次。代码如下:Jsp 正在创建注册页。获取日期时遇到问题,jsp,Jsp,我已经创建了一个注册页面,在那里我从持卡人那里获取了一些关于该卡的详细信息。 当我从用户处获取月份和日期时,所选日期会自动显示在下拉框中。这会使同一日期显示两次。代码如下: <strong>Expiry Date *<br /> <select name="edmm" id="month"> <% if( month != null) { %> <option value
<strong>Expiry Date *<br />
<select name="edmm" id="month">
<% if( month != null) { %>
<option value="<%=month%>" selected="selected"><%=month%></option>
<% } else { %>
<option selected></option>
<% } %>
<%
for(int i=1;i<=12;i++) {
String mmStr = "";
if (i < 10)
mmStr = "0" + i;
else
mmStr = "" + i;
%>
<option value="<%=mmStr%>" ><%=mmStr %></option>
<% }
%>
</select>
<select name="edyy" id="year">
<% if( year != null) { %>
<option value="<%=year%>" selected="selected"><%=year%></option>
<% } else { %>
<option selected></option>
<% } %>
<%
for(int i=(yy);i<=(yy+50);i++) {
%>
<option value="<%=i%>" ><%= i %></option>
<% } %>
</select><br />
<label for="label" class="rightmargin"> <sup>month</sup></label>
<label for="label" class="rightmargin"><sup>year</sup></label>
</strong><br />
有效期*
月
年
好吧,这是一个交易——理想情况下,你应该使用JSTLc:forEach
而不是你正在使用的代码循环一个月和年的地图。有人可能会指出一个更好的方法,但我会回答你提出的具体问题
这是如何避免在下拉列表中重复所选日期
我假设用户选择日期并提交回同一页面,并且您希望提交的mm/yyyy在循环中预先选择,而不是重复
您需要设置一个if条件,检查下一个选项元素(将要显示)是否与已选择的元素不相等
因此,对于月循环,改变
<option value="<%=mmStr%>" ><%=mmStr %></option>
到
这一年,改变
<option value="<%=i%>" ><%= i %></option>
到
记住,使用这种方法时,选定的值将位于顶部。因此,如果用户选择“04”月,下拉列表实际上会显示为不同步
<option value="04" selected="selected">04</option>
<option value="01" >01</option>
<option value="02" >02</option>
<option value="03" >03</option>
<option value="05" >05</option>
04
01
02
03
05
等等。但这是另一个故事。我想帮你解决这个问题,我盯着这段代码看了5分钟,但我无法很快清楚地计算出确切的流程,我的眼睛开始流血。很抱歉,但我强烈建议不要使用scriptlet,而只使用taglib,并将所有原始Java代码保留在JSP之外。我想@JoseK已经搞定了,但我无法证实。然而,他还是得到了我的支持,因为我努力去理解代码 另见:
我猜功能需求只是在显示期间预先选择选项。如果这是真的,那么使用JSTL就很容易了(只需访问
/WEB-INF/lib
安装它)
${month==card.month?'selected':“}
基本上是指:“如果当前迭代的月数与卡的月数匹配,则打印所选的
,否则不打印任何内容。”。就这么简单:)
另见:
<%
if (Integer.parseInt(year) != i){
%>
<option value="<%=i%>" ><%= i %></option>
<% }
%>
<option value="04" selected="selected">04</option>
<option value="01" >01</option>
<option value="02" >02</option>
<option value="03" >03</option>
<option value="05" >05</option>
<select name="month">
<c:forEach begin="1" end="12" var="month">
<option value="${month}" ${month == card.month ? 'selected' : ''}>${month}</option>
</c:forEach>
</select>
<select name="year">
<c:forEach begin="2010" end="2020" var="year">
<option value="${year}" ${year == card.year ? 'selected' : ''}>${year}</option>
</c:forEach>
</select>
public class Card {
private String number;
private Integer month;
private Integer year;
// Add/generate getters and setters.
}