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

How can I use curly braces in Netbeans code templates for example for an slf4j template?

此处描述了创建用于创建 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"});

但运气不好。到目前为止,我的 google 技能也一直让我失望。

原来有一个简单的解决方案。我没有在任何关于 netbeans 代码模板的地方找到它,但是在关于 freemarker 的问题下:

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

基本上答案是在代码周围使用 r"...",如下所示:

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

现在可以赋值给sld了,所以我可以输入slt,展开为:

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

选择 "logMessage" 的地方(这样我可以用有用的东西覆盖它,一个选项卡选择“:{}”所以如果我想不带参数登录,我可以删除它,最后一个选项卡选择哪个是最后分配的值(如果我想替换或删除它)。