2

在我的项目中,我有一个这样的类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$"); }$

这将生成以下代码=>

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

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

abilities.add("xyz");

我应该在什么条件下指定

 $device.abilities :{ sc | abilities.add("$sc$"); }$

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

4

2 回答 2

4

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

于 2012-04-17T23:52:51.407 回答
1

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

于 2012-04-18T00:02:26.863 回答