whitespace - Freemarker 插值剥离空格?

标签 whitespace freemarker

我似乎遇到了文本区域中前导/尾随空格的问题!

如果最后一个用户在文本区域中输入了多行前导/尾随空格的值,则除了开头和结尾的一个空格外,它们都会消失。

示例: 如果文本框包含以下行:(引号仅用于帮助说明空格)

"   3.0"
"  2.2  "
"0.3   "

后台会保存为

"<textarea id=... >   3.0/n  2.2  /n0.3   </textarea>"

我的模板(对于这部分)相当简单(整个模板,不是那么容易......):
${label} ${textField}

当我再次加载值时,我注意到 getTextField() 正确获取了之前引用的所需字符串...但是当我查看 html 页面时,它显示了

" 3.0"
"2.2"
"0.3 "

当然,当“查看来源”时,它没有在 getTextField() 中看到的字符串

我尝试过的:

  • 确保后端已setWhitespaceStripping(false);设置
  • 添加<#ftl strip_whitespace=false>
  • 将 <#nl> 添加到与 ${textField} 同一行

无论我尝试什么,我都没有运气在插值后保留空格。 任何帮助将不胜感激!

最佳答案

也许你在 <#compress>...</#compress> 里面(或 <@compress>...</@compress> ) block 。它们会在运行时过滤整个输出并减少空格,无论它来自何处。我建议不要使用该指令。它使输出稍微小一些,但它具有运行时开销,并且在这种情况下可能会损坏输出。

FreeMarker 插值不会从插入的值中删除空格,也不会以任何方式更改该值。除非你在词汇上位于 <#escape ...>....</#escape> 内, block ,将自动应用。但不太可能有一个会破坏空白的转义表达式。不过可以肯定的是,你可以检查一下有没有<#escape ...>同一个模板文件中(无需在其他地方检查,因为它不是运行时指令)。

strip_whitespace#nt仅在解析期间(即执行之前)删除空格,因此它们是不相关的。

您还可以在插入之前检查插入的中是否仍然存在空格:

${textField?replace(" ", "[S]")?replace("\n", "[N]")?replace("\t", "[T]")}

如果您发现它们已被删除,则可能意味着它们在将值放入数据模型之前已被删除。那么如果不是 FreeMarker。

关于whitespace - Freemarker 插值剥离空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14207225/

相关文章:

css - 为什么 `white-space` 在 IE 和 Firefox 之间不一致?

r - 是否可以创建一个在 R 中的列名称中包含空格的数据框?

ruby-on-rails - 从 Ruby 变量中去除空格的万无一失的方法?

git - 如何摆脱 git 中的虚假更改?

java - Freemarker:如何将XML放入数据模型中?

spring-boot - 从类路径外部的文件夹加载 freemarker 模板

html - 如何使 DIV 或 SPAN 具有固定宽度的内容加上带有空白的剩余可用空间?

java - 在 freemarker 中遍历 hashmap

html - 同一行上的元素不会导致按钮 CSS 之间出现空格

java - Java项目(含前端技术)如何统计KLOC?