2

我用jsp:setProperty用户数据填充 bean 字段。我的JSP页面看起来像:

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

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

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

4

3 回答 3

0

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

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

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

于 2013-11-06T15:49:38.377 回答
0

我部分同意@Changgeng。

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

它不想让您与 混淆'\n'new line因此他保留了所有内容。

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

于 2013-11-07T20:23:26.093 回答
0

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

作为一般规则转义序列

\r
\n

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

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

<br>

抱歉,我无法为您提供说明 jsp 标签没有执行此操作的官方文档。

于 2013-11-07T07:04:23.920 回答