Jsf 如何在backingbean中设置h:commandButton的背景色

Jsf 如何在backingbean中设置h:commandButton的背景色,jsf,Jsf,我有一个命令按钮,当我点击该按钮时,该按钮的背景颜色应该改变。这应该在backingbean方法中完成。如何在Java方法中设置命令按钮的颜色?我试过这个 if (dt.equals(getDate())) { System.out.println("Date is equal...."); button.setBackground(Color.yellow); } else { System.out.println("date is different"); } 但它显示出错误

我有一个命令按钮,当我点击该按钮时,该按钮的背景颜色应该改变。这应该在backingbean方法中完成。如何在Java方法中设置命令按钮的颜色?我试过这个

if (dt.equals(getDate())) {
  System.out.println("Date is equal....");
  button.setBackground(Color.yellow);
}
else {
  System.out.println("date is different");
}
但它显示出错误

找不到方法集背景(Java.awt.color)


你犯了一些概念上的错误

  • 你把JSF和Swing搞混了
  • 您正在尝试操纵控制器中的视图
  • 要了解什么是JSF。要了解什么是秋千。它们不一样。在使用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;
    }
    
    请注意,在HTML透视图中,通过
    style
    属性使用内联CSS是一种糟糕的做法。最好是创建一个表示特定条件的CSS类。例如,“突出显示”(或特定条件下的任何特定术语)

    。突出显示{
    背景:黄色;
    }
    
    
    ...
    
    看一看谢谢兄弟的快速响应…:)@bhdrkn:这个问题最初被错误地标记为[java]。不客气。既然你是新来的,别忘了在对理解和解决具体问题最有帮助的时候,把答案标注为“接受”。另请参见兄弟的一个小帮助。。我有数据网格和表格。在数据网格中,我有每个位置的命令按钮。在表中,我有id、日期和位置属性。按钮应根据表中的id进行着色。我怎么能得到这个?请帮个忙。提前谢谢。这部分是对上述帖子的评论,不是新问题。对于新问题,按右上角的“提问”按钮。是的,我得到了那个兄弟。。。但是每个位置的整个命令按钮都变为黄色,即数据网格中的颜色。但是我需要特定的位置命令按钮以黄色显示,然后只需相应地改变
    {…}
    中的代码逻辑,它检查行而不是bean?
    <h:commandButton ... style="background: #{bean.dateEqual ? 'yellow' : 'none'}" />
    
    <h:commandButton ... style="background: #{bean.dt eq bean.date ? 'yellow' : 'none'}" />
    
    <h:outputStylesheet name="style.css" />
    ...
    <h:commandButton ... styleClass="#{bean.dateEqual ? 'highlight' : ''}" />