Как удалить предыдущий attributeModifier при добавлении нового attributeModifier? - PullRequest
0 голосов
/ 12 июня 2011

У меня есть два столбца, которые представляют собой ссылки, размещаемые за границей. Когда я щелкаю один столбец, я менял цвет столбца, добавляя attributeModifier следующим образом

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

Это отлично работает. Но когда я нажимаю на второй столбец, первый столбец остается измененным цветом. Но я ожидаю, что только столбец, который я нажимаю, должен содержать этот атрибутModifier!

Ответы [ 2 ]

4 голосов
/ 12 июня 2011

Вы не должны менять модификатор.

Хитрость в том, чтобы ваша модель возвращала правильное значение. Поэтому вместо использования 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;";
   }
}

И, конечно, это также означает, что вы можете добавить модификатор атрибута к каждому столбцу при его создании, и вам не придется беспокоиться о них позже.

0 голосов
/ 12 июня 2011

Еще один способ достичь желаемого - добавить класс css в выбранную строку с помощью Javascript (удаление класса из старого).

...