加载没有新行的textarea

时间:2012-10-02 08:05:45

标签: html struts2 textarea ibatis

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

它映射到我的Struts bean中的String。

jspx(在表单中处理consult和update)看起来就是这样:

<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中没有考虑它们。但是当我重新加载它们时,它们就是某种程度。

2 个答案:

答案 0 :(得分:1)

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

<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,以及属性标签......如果有人有更好的答案(必须有),我还在听;)

答案 1 :(得分:0)

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