Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么这个scriptlet代码显示在HTML页面上?_Html_Jsp_Scriptlet - Fatal编程技术网

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

为什么这个scriptlet代码显示在HTML页面上?,html,jsp,scriptlet,Html,Jsp,Scriptlet,对于下面给出的代码,我在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 ){%>

对于下面给出的代码,我在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问题,它导致了文件的旧版本。重建和重新部署,一切都很好

我从不建议您在JSP中使用Scriptlet,而是使用更易于使用且不易出错的脚本

首先尝试使用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>

您可以使用下面提到的条件运算符

<input type="text" name="CMD" size="20" maxlength="16" 
    value="<% = retrieveXMLCommand.cmdNumber.length() > 0 ? retrieveXMLCommand.cmdNumber:"" %>" />


希望它能工作

您已经有了自动关闭输入标签的功能。请注意,您已打印出


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

您能否显示实际输出的HTML而不是浏览器试图对其执行的操作?@Brad在第页添加了代码。maxlength=“16”后面有一个
。这是关闭标记,并将从该标记到
之间的所有内容视为文本。Braj,我看到的是一个遗留代码,类似于2000行类似代码,因此我认为重构在绝对必要之前是不可行的。但我会尝试按照你建议的方法修改它。第二个选项呢?是的,我正在按照这个方法修改。我将在编辑和测试后通知您。:)你又一次把html和Scriplet混在一起了。哦,天哪,它不起作用,所以我把整个东西都拆开,然后切换回原来的代码。我发现这是一个WebSphere缓存问题。重新部署,一切都很好。我不能将此标记为答案,但我将+1。谢谢你帮我解决问题。作业Scriplet

<input type="text" name="CMD" size="20" maxlength="16" 
    value="<% = retrieveXMLCommand.cmdNumber.length() > 0 ? retrieveXMLCommand.cmdNumber:"" %>" />
<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>