为什么这个scriptlet代码显示在HTML页面上?

时间:2014-05-27 14:16:10

标签: html jsp scriptlet

enter image description here

对于下面给出的代码,我在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%>">&nbsp;
    <%}else{%>
        value="">&nbsp;
    <%}%>
</td>

在运行它的页面上看到的HTML

<td class="data" align="left" valign="middle" width="80%">

    <input type="text" name="CMD" size="20" maxlength="16">

    value="">&nbsp;

</td>

我不知道这是否与不同的服务器版本有关。此代码在WAS 8.5服务器上运行,但是当它在WAS 6.1上运行时,页面上不显示value="">。奇怪!

更新

上述代码没有任何问题。这是一个WebSphere问题,它正在拿起旧版本的文件。重建并重新部署,这一切都很好!

4 个答案:

答案 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 + "' />&nbsp;");
%>
</td>

答案 3 :(得分:0)

在这种情况下,上述代码没有任何问题。这是一个 WebSphere问题,它选择了旧版本的文件。我重建并重新部署,一切正常!