0
<input type="text" name="designation" value=<%=request.getParameter("designation")%> ></input>

在这个 JSP 中,我使用 window.location.replace() 函数通过 javascript 从另一个 JSP 页面发送请求参数。

我想在这个jsp页面的文本框中显示那个请求参数。

但它只显示字符串的一部分,直到第一个空格。剩余的字符串被修剪。

这个问题的原因可能是什么?

例如,如果 designation="software Engineer" 那么它在文本框中只显示“软件”,而不是“”(空格)和“工程师”

4

1 回答 1

5

您需要用引号将属性值括起来。

<input type="text" name="designation" value="<%=request.getParameter("designation")%>">

否则,空格将被解释​​为 HTML 元素属性分隔符,下一个单词将成为另一个 HTML 元素属性。


与具体问题无关,如果您在整个 JSP 中使用这种方法,也用于重新显示来自 DB 的用户控制数据,那么您就有了XSS 攻击漏洞。确保正确地对它们进行 HTML 转义。另请参阅JSP/Servlet Web 应用程序中的 XSS 预防

于 2012-05-02T21:50:05.920 回答