2016-05-01 5 views
1

Как я могу объединить строки в freemarker?Конкатенационные строки в freemarker

Это не работает.

<#function foo input> 
<#local str="Hello "> 
${str} = ${str} + ${" world"} 

<#return str> 
</#function> 

${foo("a")} 

Вот онлайн оценщик:
http://freemarker-online.kenshoo.com/

Edit: Для того, чтобы понять, что нужно использовать его с переменными, чтобы иметь возможность написать что-то вроде этого.


public String sayHello() {return "Hello";} 
public String sayWorld() {return "world"}; 
public String sayPeople() {return "people";} 

public void main() { 
String str = ""; 
str += sayHello(); 
str += ""; 
str += sayWorld(); 
str += ""; 
str += sayPeople(); 

return str; 
} 

ответ

1

Как <#return "Hello " + input + "!"> или <#return "Hello ${input}!">. Если вы попытаетесь напечатать на выходе внутри #function (в отличие от внутри #macro), он будет проигнорирован.

Edit: Аналогично на примере Java добавил:

<#function concatDemo> 
<#local str = ""> 
<#local str += sayHello()> 
<#local str += " "> 
<#local str += sayWorld()> 
<#local str += "!"> 
<#return str> 
</#function> 

<#function sayHello><#return "Hello"></#function> 
<#function sayWorld><#return "World"></#function> 

${concatDemo()} 
+0

Спасибо, но вы полностью пропустили переменную, которая мне нужно использовать. См. Мое редактирование. – user1097772