如何在支持bean中设置h:commandButton的背景颜色

时间:2015-08-19 11:57:22

标签: jsf

我有一个命令按钮,当我点击它时,应该更改该按钮的背景颜色。这应该在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)。

1 个答案:

答案 0 :(得分:6)

你犯了一些概念上的错误。

  1. 您将JSF与Swing混为一谈。
  2. 您正试图操纵控制器中的视图。
  3. 要了解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'}" />
    

    或者,如果您有dtdate属性的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' : ''}" />