我有一个命令按钮,当我点击它时,应该更改该按钮的背景颜色。这应该在backing bean方法中完成。如何在Java方法中设置命令按钮的颜色?我试过这个
if (dt.equals(getDate())) {
System.out.println("Date is equal....");
button.setBackground(Color.yellow);
}
else {
System.out.println("date is different");
}
但显示错误
找不到方法集Background(Java.awt.colour)。
答案 0 :(得分:6)
你犯了一些概念上的错误。
要了解JSF是什么,start here。要了解Swing是什么,start here。他们不一样。在使用JSF开发时,不要再考虑使用Swing或搜索Swing解决方案。
对于MVC方面,支持bean是控制器。它应该只操纵模型(bean的属性),而不是视图(XHTML文件)。视图(XHTML文件)应该只通过控制器(托管bean实例)访问模型(bean的属性)。
以下是正确的方法:
private boolean dateEqual;
public void someActionMethod() {
dateEqual = dt.equals(date);
}
public boolean isDateEqual() {
return dateEqual;
}
<h:commandButton ... style="background: #{bean.dateEqual ? 'yellow' : 'none'}" />
或者,如果您有dt
和date
属性的getter方法,您甚至可以在没有附加属性的情况下离开:
<h:commandButton ... style="background: #{bean.dt eq bean.date ? 'yellow' : 'none'}" />
请注意,在HTML透视图中,通过style
属性使用内联CSS是一种不好的做法。最好是创建一个表示特定条件的CSS类。例如。 &#34;突出&#34; (或特定条件所具有的任何特定术语)。
.highlight {
background: yellow;
}
<h:outputStylesheet name="style.css" />
...
<h:commandButton ... styleClass="#{bean.dateEqual ? 'highlight' : ''}" />