jsp:setProperty 是否转义了 esc-sequences



我使用jsp:setProperty用用户数据填充bean字段。我的JSP页面如下所示:

<%-- skipped code --%>
<jsp:setProperty name="myBean" property="*"/>
<%-- skipped code --%>
<input type="text" name="myField" value=""></td> 
<%-- skipped code --%>

当我在文本字段中指定包含 esc 序列的值时(例如 rn ),然后尝试在我的 bean 中调试setMyField(String s) setter,s似乎带有转义字符(例如 \r\n )。

这是常见的jsp:setProperty行为吗?我试图查找有关此功能的信息,但没有成功。我需要文档或任何其他证明它应该以这种方式工作的证据。

当您说s似乎带有转义字符时(例如 \r\n ),这是调试器的行为。实际上有四个字符:'\', 'r', '\', 'n'

如果通过 System.out.println(myBean.getMyField()) 打印出来,您应该会在控制台中看到rn

当你做myBean.setMyField("n")时,实际上只有一个字符:'n'

我怀疑输入字段正在被清理(通过应用程序中的其他内容)。

作为一般规则,转义序列

r
n

当它们通过输入字段进入时需要转义(出于安全原因)。这意味着在服务器处理输入之前,向这些序列添加额外的反斜杠。

我建议用类似的东西替换"提交"之前的序列

<br>

抱歉,我无法为您提供说明 jsp 标签没有这样做的官方文档。

我部分同意@Changgeng。

您看到的行为是调试器本身,因此不用担心。我认为它试图保留您发送的所有字符,您必须知道完整的值,因此它会在序列中的每个附加一个

它不希望你'n'new line混淆,所以他保留了一切。

如果在控制台上打印它,它将与您从客户端发送的序列相同。

最新更新