对于下面给出的代码,我在HTML页面上显示了这个value="">
,如上所示。有关如何修复它的任何建议吗?
<td class="data" align="left" valign="middle" width="80%">
<input type="text" name="CMD" size="20" maxlength="16"
<% if ( retrieveXMLCommand.cmdNumber.length() > 0 ){%>
value="<%=retrieveXMLCommand.cmdNumber%>">
<%}else{%>
value="">
<%}%>
</td>
在运行它的页面上看到的HTML
<td class="data" align="left" valign="middle" width="80%">
<input type="text" name="CMD" size="20" maxlength="16">
value="">
</td>
我不知道这是否与不同的服务器版本有关。此代码在WAS 8.5服务器上运行,但是当它在WAS 6.1上运行时,页面上不显示value="">
。奇怪!
更新
上述代码没有任何问题。这是一个WebSphere问题,它正在拿起旧版本的文件。重建并重新部署,这一切都很好!
答案 0 :(得分:1)
我从不建议您在JSP中使用 Scriptlet ,而是使用更容易使用且不易出错的JavaServer Pages Standard Tag Library。
首先尝试使用JSTL:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:if test="${ retrieveXMLCommand.cmdNumber.length() > 0}">
<td class="data" align="left" valign="middle" width="80%">
<input type="text" name="CMD" size="20" maxlength="16" value="${retrieveXMLCommand.cmdNumber}"/>
</td>
</c:if>
根据您的代码,首先计算该值,然后最终在value
属性中使用它以使其更清晰。
<%
String value = "";
if (retrieveXMLCommand.cmdNumber.length() > 0) {
value = retrieveXMLCommand.cmdNumber;
}
%>
<td class="data" align="left" valign="middle" width="80%">
<input type="text" name="CMD" size="20" maxlength="16" value="<%=value%>"/>
</td>
答案 1 :(得分:0)
您可以使用如下所述的条件运算符。
<input type="text" name="CMD" size="20" maxlength="16"
value="<% = retrieveXMLCommand.cmdNumber.length() > 0 ? retrieveXMLCommand.cmdNumber:"" %>" />
希望它能够运作
答案 2 :(得分:0)
您已自动关闭输入标记。请注意,您已在一行打印出<input type="text" name="CMD" size="20" maxlength="16"
,然后您尝试在if语句中打印其余行,另一行。在你做之前有些东西正在关闭它。什么,我不知道。但你可以尝试将它们全部打印成一行。
<td class="data" align="left" valign="middle" width="80%">
<%
String value = "";
if ( retrieveXMLCommand.cmdNumber.length() > 0 )
{
value = "" + retrieveXMLCommand.cmdNumber;
}
out.print("<input type='text' name='CMD' size='20' maxlength='16' value='" + value + "' /> ");
%>
</td>
答案 3 :(得分:0)
在这种情况下,上述代码没有任何问题。这是一个 WebSphere问题,它选择了旧版本的文件。我重建并重新部署,一切正常!