intellij IDEA 中的 Java 实时模板在块注释中行为不正确?

问题描述 投票:0回答:1

我正在定义自己的实时模板,在块注释内使用(依赖)变量时,该行为似乎是错误的(未测试行注释)。

我的模板:

$commentStart$*
* Repository to handle {@link  $ClassName$} entities.
$commentEnd$
@DDD.Repository
public interface $EntityName$Repository {
    $commentStart$*
     * Persists the given instance
     * @param $entityName$
     * to persist
     * @return the given {@code $entityName$}
    $commentEnd$
    $ClassName$ save($ClassName$ $entityName$);
    
    $END$
}

具有以下变量:

如果我让所有块注释不包含任何变量,模板将按预期工作。另外,我很确定变量

ClassName
应该不是必需的。

我尝试了几种变体,例如删除

blockCommentStart()
并简单地使用
/**
(以及分别使用
end
)。我尝试在所有代码位置使用相同的变量,但如果变量嵌入在注释中,则模板无法工作。 我希望模板根据变量的表达式计算变量并正确插入它们。

java intellij-idea live-templates
1个回答
0
投票

最终用文件模板解决了这个问题:

#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
#parse("File Header.java")
/**
 * Repository to handle {@link ${NAME}} entities.
 *
 * @see ${NAME}
 */
 @DDD.Repository
public interface ${NAME}Repository {

    #set($arg = $NAME.substring(0,1).toLowerCase() + $NAME.substring(1))
    /**
     * Persists the given instance.
     *
     * @param ${arg} 
     *            the entity to persist
     *
     * @return the given {@code ${arg}}
     */
    ${NAME} save(${NAME} ${arg});
}
© www.soinside.com 2019 - 2024. All rights reserved.