2016-05-13 45 views
0

我想在Velocity模板中用引號引起動態生成的文本。動態生成的文本也可以爲空,因此不需要顯示引號。但是如果文本不是空的,它需要用引號括起來。在速度模板中引用動態生成的文本在Java中

這可以通過使用Velocity模板來實現,當文本爲空時,它周圍的引號消失了嗎?

我的代碼如下:

#if ($messageFromSender == "") <i></i> 
#else <i>&quot;$!{messageFromSender}&quot;</i> 

這是我得到的異常:

org.apache.velocity.exception.ParseErrorException: Encountered "<EOF>" 

在此先感謝。

+0

您提供的代碼是否工作?它會給出錯誤嗎? – Turtle

+0

此時刪除if else添加後,模板工作正常。 –

回答

0

是的,你可以這樣做。試試這個吧 -

讓我們假設你有一個列表itemList,它有引號中的文本。

List<String> itemList = new ArrayList<>(); 

itemList.add("\"item1\"");  //item1 in quotes 

itemList.add("\"\"");   //no text, just quotes 

itemList.add("\"item2\"");  //item2 in quotes 

現在,將此itemList添加到velocity上下文中,並將StringUtils對象也添加到上下文中。

context.put("itemList", itemList); 

context.put("stringUtils", new org.apache.commons.lang.StringUtils()); 

現在,在Velocity模板,你可以原樣StringUtils

#foreach($item in $itemList) 
    #if($stringUtils.length($item) > 2) 
     $item //print item if text is not empty 
    #else 
     //print nothing if text is empty. 
    #end 
#end 

length()方法來顯示文本被用來檢查項目的大小。

如果文本不爲空,則大小將大於2.(引號大小+文本大小)。

如果文本爲空,其大小將恰好爲2(引號的大小)。

輸出

「物品1」 //打印文本,如果不爲空項。

//如果文本爲空,則不打印任何內容。

「item2」//如果文本不爲空,則打印項目。

希望它有幫助!讓我知道任何澄清。

+0

謝謝兄弟。它確實有幫助。如果還有其他問題,我不會在最後加上結尾。 –

0

您可以使用if語句來檢查文本值並作出相應的響應。

#if ($foo == "") 
<h1>" "</h1> 
#elseif ($foo != "") 
<h1>"$foo"</h1> 
+0

嗨,感謝您的回覆。如果還有其他問題,我在解決模板問題時遇到了問題。這是我已經把: –

+0

#如果($ messageFromSender == 「」) 的#else " $ {} messageFromSender "

+0

請更新的問題,而不是評論!這樣其他用戶可以更輕鬆地幫助您 – Turtle

相關問題