使用StringTemplate生成条件代码

时间:2012-04-17 23:43:32

标签: java stringtemplate

在我的项目中,我有一个类Device,如下所示:

public class Device {
    private Set<String> abilities = new HashSet<String>();

    public Device(Set<String> abilities) {
        this.abilities = abilities;
    }

    public Set<String> getAbilities() {
        return abilities;
    }
}

我正在使用以下内容初始化此Device课程。

Set<String> device1Abilities = new HashSet<String>();
device1Abilities.add("BadgeReader"); 
device1Abilities.add("TemperatureSensor");   
device1Abilities.add("xyz");
Device d1 = new Device(device1Abilities);

在我的stringTemplateFile中,我正在使用

检索异能
$device.abilities :{ sc | abilities.add("$sc$"); }$

将生成以下代码=&gt;

abilities.add("BadgeReader");
abilities.add("TemperatureSensor");
abilities.add("xyz");

现在,我的要求是-----我不想生成这行代码:

abilities.add("xyz");

我应该在

中指定什么条件
 $device.abilities :{ sc | abilities.add("$sc$"); }$

这样它就不会产生那条线?

2 个答案:

答案 0 :(得分:4)

该计算确实属于模型,因此您应该对传递给模板的列表进行过滤。模板不应该确定要显示哪些数据。它应该显示模型应该显示的数据。希望这有帮助。

答案 1 :(得分:1)

here。您正在使用匿名子模板abilities.add("$sc$");。相反,您可以使用sc作为参数的模板调用。你可以在"xyz"进行测试。 虽然可能有更多StringTemplate经验的人知道更短的符号。