动态更改命令按钮的背景颜色

时间:2015-03-17 14:19:41

标签: jsf jsf-2 primefaces

我想在Primefaces中动态更改commandbutton的颜色。

以下是commandbutton的代码摘录:

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

buttonStylekkcIncomingErrorBean类的字段:

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

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

有趣的是,更新counter变量已更新但buttonStyle未更新。

你有什么想法来解决这个问题吗?

关于

1 个答案:

答案 0 :(得分:2)

您将stylestyleClass混为一谈。

style属性应该用于声明单个CSS属性,就像您当前在模型中紧耦合一样。

styleClass属性只能用于声明CSS类名,而CSS类名又在具有属性的普通CSS文件中声明。它最终呈现为HTML class属性,如果你在JSF生成的HTML输出中偷看,你应该注意到它。

所以你有两个选择:

  1. 使用style属性。

    <p:commandButton ... style="#{kkcIncomingErrorBean.buttonStyle}" />
    
  2. 改为使用CSS类名。

    private String buttonStyle = "error";
    

    在您include via <h:outputStylesheet>的普通CSS文件中使用以下类声明。

    .error {
        background: red;
    }
    

    顺便说一句,那个setter是不必要的。

  3. 当然,首选的是正常的CSS类名,如选项2所示。 CSS属性不属于Java文件,而是属于CSS文件。