2015-03-17 4 views
1

Я хочу динамически менять цвет commandbutton в разделе «Поверхности».Изменение динамического цвета фона commandbutton

Вот фрагмент кода из CommandButton:

<p:commandButton id="movieBtn" value="#{kkcIncomingErrorBean.counter}" 
type="button" onclick="PF('errorTable').show()" 
styleClass="#{kkcIncomingErrorBean.buttonStyle}"/> 

buttonStyle это поле kkcIncomingErrorBean класса:

private String buttonStyle="background-color:red"; 
... 
public String getButtonStyle() { 
    return buttonStyle; 
} 

public void setButtonStyle(String buttonStyle) { 
    this.buttonStyle = buttonStyle; 
} 

Интересно, что при обновлении обновляется counter переменная, но buttonStyle не обновляется.

У вас есть идеи исправить это?

Что касается

+0

Что такое 'styleClass =" # {kkcIncomingErrorBean.buttonStyle} "'? – Tiny

+0

@Tiny, это поле в классе 'kkcIncomingErrorBean' – nurgasemetey

ответ

2

Вы запутанным style с styleClass.

Атрибут style должен использоваться для объявления отдельных свойств CSS, например, как у вас в настоящее время тесно связаны в вашей модели.

Атрибут styleClass может использоваться только для объявления имен классов CSS, которые, в свою очередь, объявлены в обычном файле CSS со свойствами. В конечном итоге он отображается как атрибут HTML class, который вы должны были заметить, если вы заглянули в JSF-сгенерированный вывод HTML.

Так у Вас есть 2 варианта:

  1. Использование атрибута style.

    <p:commandButton ... style="#{kkcIncomingErrorBean.buttonStyle}" /> 
    
  2. Используйте вместо этого имя класса CSS.

    private String buttonStyle = "error"; 
    

    с декларацией ниже класса в обычном CSS-файл, который вы include via <h:outputStylesheet>.

    .error { 
        background: red; 
    } 
    

    Кстати, этот сеттер не нужен.

Конечно, стандартное имя класса CSS, как показано в варианте 2, является предпочтительным. Свойства CSS не принадлежат в файле Java, а в файле CSS.

+0

Я вижу, спасибо за разъяснения – nurgasemetey

Смежные вопросы