如何在Netbeans代码模板中使用花括号,例如slf4j模板?

时间:2016-06-09 19:14:36

标签: netbeans freemarker netbeans-8 code-templates

此处描述了创建用于创建slf记录器的Netbeans代码模板:

http://wiki.netbeans.org/SLF4JCodeTemplate

但是为日志语句创建代码模板,例如

logger.debug("Something: {}", var);

比预期更难,因为模板语言不能平衡花括号。这意味着它将在第一个结束大括号结束捕获。

存在一些示例,例如How to get current class name in Netbeans code template?,但它们不涉及大括号问题。

我试图以各种方式逃避它们,包括:

${LOGGER default="logger" editable=false}.debug("${logMessage}${: '{}'}", ${EXP instanceof="<any>" default="exp"});

${LOGGER default="logger" editable=false}.debug("${logMessage}${: \{\}}", ${EXP instanceof="<any>" default="exp"});

但没有运气。到目前为止,我的谷歌技能也让我失望了。

1 个答案:

答案 0 :(得分:0)

原来有一个简单的解决方案。我没有发现任何关于netbeans代码模板的内容,但是关于freemarker的问题:

How to output ${expression} in Freemarker without it being interpreted?

基本上答案是使用r&#34; ...&#34;围绕代码,像这样:

${LOGGER default="logger" editable=false}.debug("${logMessage}${:r"{}"}", ${EXP instanceof="<any>" default="exp"});

现在可以将其分配给sld,因此我可以输入slt,将其展开为:

logger.debug("logMessage: {}", <last variable>);

where&#34; logMessage&#34;被选中(所以我可以用有用的东西覆盖它,一个选项卡选择&#34;:{}&#34;所以我可以删除它,如果我想不带参数记录而最后一个标签选择哪个是最后指定的值(如果我想更换或删除它。)