1

这是我的问题:在我的数据库中,我得到了一个长度为 2000 的 VACHAR2。我们称之为“commentReception”。

它被映射到我的 Struts bean 中的字符串。

jspx(在表单中处理咨询和更新)看起来是这样的:

<s:if test="%{consultAction}">
  <s:textarea name="dto.commentReception" readonly="true" cssClass="textAreaValue readonly" />
</s:if>
<s:else>
  <s:textarea name="dto.commentReception" readonly="false" cssClass="textAreaValue" />
</s:else>

当我提交表单时,bean 被正确填写,这意味着最后没有任何 \r\n ,即使在数据库中,我也只得到一行:没有换行符。

但是当我切换到consultAction,或者说再次编辑表单(不是consultAction)时,我得到的字符串带有额外的2个换行符。这真的很烦人,我不知道它是来自 Struts 还是来自标签。(我可能缺少标签属性?)

当然,如果我再次提交表单,评论字符串将与换行符一起存储在数据库中。所以它会在每次保存我的评论时再添加两行...

你知道我的问题来自哪里吗?已经谢谢了。

编辑:生成的表格

<textarea class="textAreaValue" id="saveControleReception_dto_commentReceiption" rows="" cols="" name="dto.commentReceiption">commentaire contrôle avant reception.

</textarea>

您可以看到有一些换行符,但在我的 bean 中没有考虑到它们。但是当我重新加载它时,它们不知何故。

4

2 回答 2

1

因此,似乎 struts 标记在加载 bean 时默认添加两个 \r\n 到字符串。那一定是某种错误。所以这是我的解决方案:

<s:if test="%{consultAction}">
  <textarea readonly="true" class="textAreaValue readonly"><s:property value="dto.commentReceiption"/></textarea>
</s:if>
<s:else>
  <textarea class="textAreaValue" name="dto.commentReceiption"><s:property value="dto.commentReceiption"/></textarea>
</s:else>

我使用了 html 标签而不是 Strut 的标签和属性标签...如果有人有更好的答案(必须有),我还在听;)

于 2012-10-02T09:06:41.223 回答
0

当您保存或检索数据时,添加 trim() 以防您使用 mySQL。当您检索/保存它时,这将删除剩余的空格

于 2012-10-02T08:13:02.953 回答