0

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

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

etc.

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

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

这可行,但当根本没有参数时会产生一个额外的逗号(conn 除外):

methodFoo0(Connection conn,);

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

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

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

最后,我放弃了,而是根据预渲染逻辑将逗号参数传递给模板,它要么是“,”,要么是空字符串“”。

4

2 回答 2

0

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

于 2013-04-15T11:19:06.923 回答
0

额外的逗号不是由分隔符产生的,而是您已经在 之后键入的逗号Connection conn,

您执行以下操作:

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

请注意 conn 后的逗号仅在实际上有更多参数时才放置。

于 2017-02-07T14:40:33.057 回答