2013-01-08 84 views
2

我似乎有领先/在文字区域尾随空格的问题!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(假);设置
  • 添加< #ftl strip_whitespace =假>
  • 在同一行$添加< #nl> {}文本框

不管是什么我已经试过,我并没有运气保留插值后的空格。 任何帮助将不胜感激!

回答

2

也许你是一个<#compress>...</#compress>(或<@compress>...</@compress>)块中。那些在运行时过滤整个输出并减少空白,无论它来自何处。我建议不要使用这个指令。它使输出稍微小一些,但是它有运行时间的开销,并且会在这种情况下破坏输出。

FreeMarker的插值不从插入的值删除空格,或以任何方式改变的价值。除此之外,如果你是一个词法<#escape ...>....</#escape>,块内,将被自动应用。但是,你不可能有一个破坏空白的逃避表达。但可以肯定的,你可以检查是否有在同一模板文件中的任何<#escape ...>(无需检查的其他地方,因为它不是一个运行指令)。

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

您还可以检查空白仍然存在于插入插入这样前:

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

如果你发现他们已经删除这可能意味着,他们之前已被删除价值被放入数据模型中。那么如果不是FreeMarker的话。

+0

感谢您的回复!欣赏关于strip_whitespace和#nt在这种情况下无用的信息。 我很困惑的是,heh.I尝试使用您的咨询与替代乃至[S]的和[N]的展现出来,所以看起来它使那么远。此模板中肯定没有<#escape>块。 所以,我想这意味着另一个模板可能会使用我的强迫压缩它?你有没有其他的压缩方式可能是主动的? – scottnaka

+0

Ahha!没关系,发现这是造成所有的烦恼<#compress>。十分感谢你的帮助! – scottnaka