StringTemplate4,如果是条件长度

时间:2013-04-01 09:05:54

标签: stringtemplate stringtemplate-4

我需要使用StringTemplate4生成以下类型的代码:

methodFoo0(Connection conn);
methodFoo1(Connection conn, int arg1);
methodFoo2(Connection conn, int arg1, int arg2); 

etc.

“连接conn”部分始终存在,因此我只将方法名称和其余参数传递给我的ST模板。我的模板如下所示:

<methodName>(Connection conn, <args; separator=", ">);

当没有任何参数(conn除外)时,这会产生额外的逗号:

methodFoo0(Connection conn,);

为了消除额外的逗号,我尝试使用 if 条件和长度 ST4函数,但我无法让它工作,虽然我尝试了各种类似下面的组合:

<methodName>(Connection conn <if (length(fieldsInFind) \> 0)>,<else><endif><fieldsInFind; separator=", ">)

...以及其他一些因为一些与解析相关的错误(不匹配的输入)而失败的人。

最后,我放弃并使用逗号参数传递给模板,该模板是“,”或基于预渲染逻辑的空字符串“”。

2 个答案:

答案 0 :(得分:0)

您可以使用<if (fieldsInFind)>检查第二个参数的存在,并且只有在模板的大小大于0时才将其传递给模板。

答案 1 :(得分:0)

分隔符不会生成额外的逗号,但它是您在Connection conn,之后输入的那个。

您执行以下操作:

<methodName>(Connection conn<if(args)>,<args; separator=", "><endif>)

注意conn之后的逗号只有在实际上有更多参数时才会被放置。