我似乎遇到了textareas中前导/尾随空格的问题!
如果最后一个用户在跨越多行的前导/尾随空格的textarea中键入值,则它们都会消失,除了开头的一个空格&端。
实施例: 如果文本框具有以下行:(仅用于帮助说明空格的引号)
" 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 "
当然,当“View Sourcing”它没有在getTextField()中看到的字符串
我尝试了什么:
无论我尝试过什么,我都没有运气在插值后保留空格。 任何帮助将非常感谢!
答案 0 :(得分:2)
也许您在<#compress>...</#compress>
(或<@compress>...</@compress>
)区域内。那些在运行时过滤整个输出并减少空白,无论它来自何处。我建议不要使用此指令。它使输出稍微小一点,但它有运行时开销,并且可能在这种情况下破坏输出。
FreeMarker插值不会从插入的值中删除空格,也不会以任何方式更改值。但是,如果您在词法<#escape ...>....</#escape>
内,则会自动应用。但你不可能有一个破坏空白的逃避表达。但是可以肯定的是,你可以检查相同的模板文件中是否有<#escape ...>
(不需要在别处检查,因为它不是运行时指令)。
strip_whitespace
和#nt
仅在解析期间(在执行之前)删除空格,因此它们是不相关的。
您还可以在插入之前检查插入的值中的空格是否仍然存在:
${textField?replace(" ", "[S]")?replace("\n", "[N]")?replace("\t", "[T]")}
如果您发现它们已被删除,则可能意味着在将值放入数据模型之前已将其删除。那么如果不是FreeMarker。