<input type="text" name="designation" value=<%=request.getParameter("designation")%> ></input>
Run Code Online (Sandbox Code Playgroud)
在这个JSP中,我使用window.location.replace()函数通过javascript从另一个JSP页面发送请求参数.
我想在文本框中的这个jsp页面中显示该请求参数.
但它只显示了第一个白色空间的字符串的一部分.剩余的字符串被修剪.
可能是这个问题的原因是什么?
例如,如果指定="软件工程师",那么它只在文本框中显示"软件",而不是""(空格)和"工程师"
您需要用引号括住属性值.
<input type="text" name="designation" value="<%=request.getParameter("designation")%>">
Run Code Online (Sandbox Code Playgroud)
否则,该空间将被解释为HTML元素属性分隔符,然后下一个单词将成为另一个HTML元素属性.
与具体问题无关,如果您在整个JSP中使用此方法,也是为了重新显示来自DB的用户控制数据,那么您就有了一个XSS攻击漏洞.确保正确地对它们进行HTML转义.另请参见JSP/Servlet Web应用程序中的XSS预防.