I am iterating a java list in freemarker , but I want commas in between the words. Here's my code
<#list key_list[key] as value >${value?js_string}, </#list>
This gives me output as
a,b,c,d,
I want the output in this format:(No comma in the end)
a,b,c,d
How can I get that
FreeMarker doesn't support modifying collections. But if you really want to do this in FreeMarker (as opposed to in Java), you can use sequence concatenation: <#assign myList = myList + [newItem]> . Here you create a new sequence that wraps the two other sequences.
Arithmetical calculations So the operators are: Addition: + Subtraction: - Multiplication: *
FreeMarker is a template engine, written in Java, and maintained by the Apache Foundation. We can use the FreeMarker Template Language, also known as FTL, to generate many text-based formats like web pages, email, or XML files.
eval. This built-in evaluates a string as an FTL expression. For example "1+2"? eval returns the number 3. (To render a template that's stored in a string, use the interpret built-in instead.)
If you use FreeMarker version 2.3.23 or higher, sep
tag will work for you:
<#list users as user>
${user}<#sep>, </#sep>
</#list>
OR even shorter than that:
<#list users as user>${user}<#sep>, </#list>
You have to include an <#if value_has_next>,</#if>
statement.
This may help:
<#assign seq = ["winter", "spring", "summer", "autumn"]>
<#list seq as x>
${x_index + 1}. ${x}<#if x_has_next>,</#if>
</#list>
will output:
See this and more examples at:
http://freemarker.org/docs/ref_directive_list.html
This will give exact result
Actually you need to create a variable , then append data in it. e.g <#assign result =""/>
<#assign result =""/>
<#assign seq = ["a", "b", "c", "d"]> // test data for checking output format
<#list seq as x>
<#assign result = result+"${x}"/>
<#if x_has_next>
<#assign result = result+","/>
</#if>
</#list>
${result}
Result
a,b,c,d
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With