添加新的attributeModifier时如何删除以前的attributeModifier?

时间:2011-06-12 09:57:05

标签: java wicket

我有两列是orderbyborder链接。当我点击一列时,我通过以下方式添加attributeModifier来改变列的颜色

add(new AttributeModifier("style", true, new Model<String>("background-color:#80b6ed;")));

这很好用。但是当我点击第二列时,第一列仍然是更改的颜色。但我希望只有我点击的列才能保存此属性修改器!

2 个答案:

答案 0 :(得分:4)

您不应更改修改器。

诀窍是让你的模型返回正确的值。因此,不是使用总是返回相同常量值的new Model<String>("background-color:#80b6ed;"),而是使用类似的东西:

new Model<String>() {
   @Override
   public String getObject() {
     if( columnName.equals( selectedColumn ) { //or something along these lines, to check if the current column is the selected one
        return "background-color:#80b6ed;";
     }
     return "background-color:white;";
   }
}

当然,这也意味着您可以在创建属性修改器时为每个列添加属性修改器,以后不必担心它们。

答案 1 :(得分:0)

实现你想要的另一种方法是通过Javascript(从旧的类中删除类)将css类添加到选定的行。