我想使用freemarker生成一些java代码,即为方法生成参数。我有一个名为doIt的方法,它需要一些参数名称及其类名,我将给模板一个名为paramList的参数。我定义了一个宏指令,迭代参数列表,但因此每个参数占用一行。我的模板代码如下:
<#macro paramList plist>
<#if plist??>
<#list plist as p>
${p.javaType?substring(2)} ${p.name} <#if p_has_next>, </#if>
</#list>
</#if>
</#macro>
doIt(<@paramList plist=params/>)
运行结果是:
doIt( int end ,
String endDate ,
String evtCode ,
int evtNo ,
String giftCode ,
int start ,
String startDate
)
如何使所有参数输出显示在同一行中。我知道我可以在同一行写入list指令逻辑以避免换行,但是如果还有其他逻辑,那么一段时间后读取和理解会花费太长时间。 我想要的格式是:
doIt(int end , String endDate, String evtCode , int evtNo , String giftCode , int start , String startDate)
答案 0 :(得分:5)
在最里面的<#t>
之后加</#if>
。 (见http://freemarker.org/docs/ref_directive_t.html#ref.directive.t)
答案 1 :(得分:0)
另一种方法就是改变你的代码:
<#macro paramList plist>
<#if plist??>
<#list plist as p>${p.javaType?substring(2)} ${p.name} <#if p_has_next>, </#if></#list>
</#if>
</#macro>
doIt(<@paramList plist=params/>)
即,将列表全部内联。它更难阅读,但它会保留你需要的空白字符(即空格)。