我似乎遇到了文本区域中前导/尾随空格的问题!
如果最后一个用户在文本区域中输入了多行前导/尾随空格的值,则除了开头和结尾的一个空格外,它们都会消失。
示例: 如果文本框包含以下行:(引号仅用于帮助说明空格)
" 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/