我想在Primefaces中动态更改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 :(得分:2)
您将style
与styleClass
混为一谈。
style
属性应该用于声明单个CSS属性,就像您当前在模型中紧耦合一样。
styleClass
属性只能用于声明CSS类名,而CSS类名又在具有属性的普通CSS文件中声明。它最终呈现为HTML class
属性,如果你在JSF生成的HTML输出中偷看,你应该注意到它。
所以你有两个选择:
使用style
属性。
<p:commandButton ... style="#{kkcIncomingErrorBean.buttonStyle}" />
改为使用CSS类名。
private String buttonStyle = "error";
在您include via <h:outputStylesheet>
的普通CSS文件中使用以下类声明。
.error {
background: red;
}
顺便说一句,那个setter是不必要的。
当然,首选的是正常的CSS类名,如选项2所示。 CSS属性不属于Java文件,而是属于CSS文件。