2013-01-08 93 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