NetBeans createFromTemplate 将错误的值传递给 ${name}
NetBeans createFromTemplate Passes Wrong Value To ${name}
我在我们的 NetBeans 插件中使用这样的代码:
DataObject result = dTemplate.createFromTemplate(df, name, args);
正确生成文件。但是,如果存在具有给定名称的文件,则模板会占用一个新文件名(如结果对象中所反映的),但 ${name}
值仍然指的是旧名称。例如。如果 name = Hi
和 Hi.java
已经存在,那么将创建 Hi_1.java
但 ${name}
仍然是 Hi
.
此外,我对 .java
扩展名的来源有点困惑。我的原始代码是这样的:
DataObject result = dTemplate.createFromTemplate(df, name + ".java", args);
但事实证明 .java 是不必要的,而且我不确定我在哪里指定这确实是我想要的?
我不确定这是否是 "right way" 但这是我目前所拥有的似乎有效的方法:
private String getProperName(DataFolder f, String name, int suffix) {
String actualName = name;
if(suffix > 0) {
actualName = actualName + "_" + suffix;
}
for(DataObject chld : f.getChildren()) {
if(chld.getName().equals(actualName)) {
suffix++;
return getProperName(f, name, suffix);
}
}
return actualName;
}
然后在代码中:
String actualName = getProperName(df, name, 0);
DataObject result = dTemplate.createFromTemplate(df, actualName, args);
这样重命名就不会发生,我就避免了这个问题。
我在我们的 NetBeans 插件中使用这样的代码:
DataObject result = dTemplate.createFromTemplate(df, name, args);
正确生成文件。但是,如果存在具有给定名称的文件,则模板会占用一个新文件名(如结果对象中所反映的),但 ${name}
值仍然指的是旧名称。例如。如果 name = Hi
和 Hi.java
已经存在,那么将创建 Hi_1.java
但 ${name}
仍然是 Hi
.
此外,我对 .java
扩展名的来源有点困惑。我的原始代码是这样的:
DataObject result = dTemplate.createFromTemplate(df, name + ".java", args);
但事实证明 .java 是不必要的,而且我不确定我在哪里指定这确实是我想要的?
我不确定这是否是 "right way" 但这是我目前所拥有的似乎有效的方法:
private String getProperName(DataFolder f, String name, int suffix) {
String actualName = name;
if(suffix > 0) {
actualName = actualName + "_" + suffix;
}
for(DataObject chld : f.getChildren()) {
if(chld.getName().equals(actualName)) {
suffix++;
return getProperName(f, name, suffix);
}
}
return actualName;
}
然后在代码中:
String actualName = getProperName(df, name, 0);
DataObject result = dTemplate.createFromTemplate(df, actualName, args);
这样重命名就不会发生,我就避免了这个问题。