0

我正在使用的代码如下所示:

        <% 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/”

是什么导致这些文本框显示异常?

4

2 回答 2

2

在这两种情况下,原因可能相同 - 您缺少value属性中的引号:

value=<%= msg.getName() %>

value=<%=msg.getSearchMethod() %>

改成

value="<%= msg.getName() %>"

value="<%=msg.getSearchMethod() %>"

如果没有这些引号,您将生成错误的 HTML,并依赖浏览器的优雅行为。

此外,为了安全起见,请确保从这些方法返回的字符串正确地进行了 HTML 转义。

于 2012-03-20T15:20:14.687 回答
0

我不是 JSP 专家,但据我所知,您的 HTML 代码看起来不错。也许尝试在 value 属性中加上引号?网页可能会在输入标签的末尾拾取那个结束的“/”。

于 2012-03-20T15:28:52.927 回答