我正在使用的代码看起来像这样:
<% MessageInfo msg= hp.getInfo(transactionName, checkpointLoc);%>
<form name='editinfo' action="/editmessage.jsp" method="post">
<table align=center colspan = "3">
<tr>
<td><u><b>Currently Editing:</b></u></td>
</tr>
<tr>
<td>Name:</td>
<td><input type="text" name="tname" style="width:254px" value=<%= msg.getName() %>/></td>
<td><%= msg.getName()%></td>
</tr>
<tr>
<td>Search Method:</td>
<td><input type="text" name="searchmethod" style="width:254px" value=<%=msg.getSearchMethod() %>/></td>
</tr>
</table>
</form>
现在,它在文本框中显示奇怪。
在第一个文本框中,它只显示应该显示的字符串的第一个单词,但是当我不将字符串放在文本框中时,将显示完整的字符串。例如,如果要显示“Hello world”,则“Hello”将是文本框中显示的唯一内容。
对于第二个文本框,我遇到了另一种问题。这一次,'/'字符被附加到字符串的末尾。当我将JSP显示在文本框之外时,不会出现此'/'字符。在这种情况下,字符串只有一个单词,如“XPath”,文本框显示“XPath /”
是什么导致这些文本框奇怪地显示?
答案 0 :(得分:2)
在这两种情况下,原因可能都相同 - 您在value
属性中缺少引号:
value=<%= msg.getName() %>
value=<%=msg.getSearchMethod() %>
更改为
value="<%= msg.getName() %>"
value="<%=msg.getSearchMethod() %>"
如果没有这些引用,您将生成错误的HTML,并依赖于浏览器的优雅行为。
另外,为了安全起见,请确保从这些方法返回的字符串是正确的HTML-ecapaped。
答案 1 :(得分:0)
我不是JSP专家,但从我所看到的,您的HTML代码看起来很好。也许尝试在value属性中加引号?网页可能会在输入标记的末尾拾取“/”。