文本区域中出现换行符和空格

发布于 2024-09-19 02:34:22 字数 560 浏览 9 评论 0原文

在我们的 Cocoon 环境中,我们有一些带有文本区域的表单。用户提交表单后,将在最终提交完成之前显示概述。 因此,每个表单对象的数据都存储在 POJO 中。 如果用户位于该概述页面并决定返回表单,则该表单将填充从 POJO 读取的已提交数据。但是,当使用 JavaObject 中的数据填充文本区域时,数据中会添加一些换行符和空格。 我检查了 POJO 的数据中是否有这些换行符,但字符串看起来很干净。用户输入的每个空格都是字符32,这是一个简单的空格。

我还检查了序列化器(我们使用扩展 Cocoon 的 AbstractSerializer 的自定义序列化器),但这里没有意外添加换行符/空格。

但是,当使用 Javascript 输出该 Textarea 的当前内容时,它包含换行符 ('\n') 以及前面提到的附加空格。

我怀疑从 Java 的空格字符到 HTML 的空格字符的转换不知何故失败了。 这些换行符出现而不是空格,而不是在单个单词内。它们还根据文本区域的大小改变位置。它们不在行尾,因此不能通过换行或其他方式强制它们。

例子: 用户输入“测试测试测试测试测试”变为“test\n [36x Space]测试测试测试测试”

In our Cocoon environment we have a few forms with textareas. Once the user submits a form, an overview is displayed before the final submit is done.
Therefor, each form-object's data is stored in POJOs.
If the user is on that overview page and decides to go back to the form, the form is filled with the already submitted data read from the POJOs. However, when filling the textarea with data from the JavaObject, some linebreaks and whitespaces are added to the data.
I checked the POJO's data for these linebreaks but the String looks clean. Each whitespace entered by the user is of Character 32, which is a simple space.

I also checked the Serializer (we use a custom one that extends Cocoon's AbstractSerializer) but no linebreaks/whitespaces added by accident here.

When using Javascript to output the current content of that Textarea though, it contains linebreak characters ('\n') as well as the aforementioned additional whitespaces.

My suspicion is that the conversion from Java's Space-Character to HTML's space characters somehow fails.
These linebreaks appear instead of spaces, not inside a single word. They also change position depending on the textarea's size. They are not at the end of a line, so they can't be forced by wrap or something.

Example:
User input "test test test test test" becomes "test\n [36x Space] test test test test"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

江城子 2024-09-26 02:34:22

这是一个想法...您使用什么来实际将页面输出到客户端?我并不完全熟悉 Cocoon 环境,但我假设您正在使用某种“模板”引擎(JSP?Velocity?)。我说的是服务器端的实际文件,它具有 textarea 元素;将涉及 textarea 元素的代码片段粘贴到此处,我们就会看到。

Here's a thought... What do you use to actually output the page to the client? I'm not entirely familiar with the Cocoon environment but I assume you're using some sort of a "templating" engine (JSP? Velocity?). I'm talking about the actual file, on the server side, that has the textarea element; paste here the snippet of code that involves the textarea element and we'll see.

谁许谁一生繁华 2024-09-26 02:34:22

这些额外的换行符和空格是 XSL 转换的典型特征(开发时没有意识到此类换行符/空格问题)。

您很可能在您的 cocoon 应用程序中使用了 XSLT,也许应该对此事进行检查。

您可以采取许多众所周知的注意事项。您可以从SO(XSLT - 从模板中删除空格)开始了解这些。

These extra linebreaks and whitespaces are typical from XSL transformations (that were developed unaware of such linebreaks/whitespace issues).

It is likely that you use XSLT in your cocoon application, and maybe they should be checked on that matter.

There are a number of well-known cautions you can take. You can start on SO (XSLT - remove whitespace from template) to get an idea of these.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文