如何在运行时更新JSF组件的样式

如何在运行时更新JSF组件的样式,我必须澄清我想要更改组件的位置,并在某些情况下隐藏它。

  

public void setNoPersonal(String noPersonal) { this.noPersonal = noPersonal; this.outNombre.setValue(this.noPersonal); this.outNombre.setRendered(true); this.outRfc.setStyle("text-align:left;color:red;margin-top:2px"); //component.getAttributes().put("style", "color:red"); this.outRfc.setRendered(true); }

您可以在stylestyleClass属性中使用EL表达式。 您可以使用条件运算符?:在EL中根据布尔条件打印不同的字符串。

例如

  

有了这个吸气剂

 public boolean isShow() { return show; } 

而这个CSS

 .show { display: block; } .hide { display: none; } 

请注意,上面仍然将组件呈现给客户端,因此您可以使用纯JavaScript切换可见性。

或者,如果您确实想要完全显示/隐藏服务器端,那么您可以使用rendered属性。 它也只接受EL表达式:

  

您只需记住,当此计算结果为false ,该组件根本不存在于客户端,因此您将无法使用纯JavaScript或Ajax再次显示它。 使用Ajax显示它时,您需要重新呈现其父组件。


根据您的新代码段进行更新 ,这不是正确的方法。 您不应该将组件绑定到bean。 您还应该在自己的.css文件中定义CSS样式,这样更容易维护,并使您的bean和视图保持特定的CSS混乱。

例如(我随机猜测样式取决于某种错误/成功状态)

  

与那些吸气剂

 public boolean isShow() { return show; } public boolean isSuccess() { return success; } 

而这个CSS

 .success { text-align: center; color: #333333; margin-top: 30px; } .error { text-align: left; color: red; margin-top: 2px; } 

您只需在bean(post)构造函数或action(侦听器)方法中相应地设置这些布尔值。