Jsf 2 更改选择布尔复选框上InputExtField的颜色

Jsf 2 更改选择布尔复选框上InputExtField的颜色,jsf-2,primefaces,Jsf 2,Primefaces,我有一个表单,其中有一个selectbox和一个默认红色的inputtext字段 选中该复选框后,我想更改InputExtField的颜色 我该怎么做 我正试图通过这种方式实现,但无法改变颜色 pojo: private Boolean changeColor=false; 私有布尔符号1; public void ChangeColorEvent(){ System.out.println(“内部颜色变化事件”); changeColor=true; sign1=true; } 对于开始,将i

我有一个表单,其中有一个selectbox和一个默认红色的inputtext字段

选中该复选框后,我想更改InputExtField的颜色

我该怎么做

我正试图通过这种方式实现,但无法改变颜色

pojo:

private Boolean changeColor=false;
私有布尔符号1;
public void ChangeColorEvent(){
System.out.println(“内部颜色变化事件”);
changeColor=true;
sign1=true;
}

对于开始,将id添加到您的


并将开始时的
p:ajax
更改为此
,将id添加到您的


然后将
p:ajax
更改为这个
,您可以使用Daniel建议的方法。或者是一个稍微不同的版本

<p:inputText id="hppa1" size="5" style="#{patient.changeColor eq true ? 'color:White;background:Green;' : 'color:White;background:Red;'}"/>

节省不必要的标记和处理


更新:顺便说一句,如果您不需要任何
sign1
boolean标志的服务器端反射,那么您可以在Javascript中很好地处理这些事件。您可以使用Daniel建议的方法。或者是一个稍微不同的版本

<p:inputText id="hppa1" size="5" style="#{patient.changeColor eq true ? 'color:White;background:Green;' : 'color:White;background:Red;'}"/>

节省不必要的标记和处理


更新:顺便说一句,如果您不需要任何
sign1
boolean标志的服务器端反射,那么您可以很好地在Javascript中处理这些事件,jQuery使用@Daniel提到的
styleClass
的替代方法如下: 在
css
中定义样式类:

.red {
    background-color: red;
}

.blue{
    background-color: blue;
}
只需一个
p:inputText
(您在其中两个之间切换的方法确实是错误的)并向其中添加一个
styleClass=“red”

<p:inputText id="inputID" styleClass="red"/>
注1:jQuery中的
[id*=“+param+”]
是因为primefaces根据包装它的内容(例如
表单
数据表
,…)向元素添加
id
p:inputText
)。使用
[id*=“+param+”]
基本上可以避开这些添加的
id
并找到所需的
inputText

注2:如果只想使用红色类,可以使用:

function changeColor(param){
              jQuery("[id*="+param+"]".toggleClass('red'));       
            };

编辑:此方法与您在@NikhilPatil answer评论中提到的初始阶段没有问题。

使用@Daniel提到的
styleClass
使用jQuery的替代方法如下: 在
css
中定义样式类:

.red {
    background-color: red;
}

.blue{
    background-color: blue;
}
只需一个
p:inputText
(您在其中两个之间切换的方法确实是错误的)并向其中添加一个
styleClass=“red”

<p:inputText id="inputID" styleClass="red"/>
注1:jQuery中的
[id*=“+param+”]
是因为primefaces根据包装它的内容(例如
表单
数据表
,…)向元素添加
id
p:inputText
)。使用
[id*=“+param+”]
基本上可以避开这些添加的
id
并找到所需的
inputText

注2:如果只想使用红色类,可以使用:

function changeColor(param){
              jQuery("[id*="+param+"]".toggleClass('red'));       
            };

编辑:这种方法对于您在@NikhilPatil answer的评论中提到的初始阶段没有问题。

请阅读
change()
css()
jQuery
方法。答案就在那里。请一定要提到你到目前为止在这个问题上做了哪些尝试。在stackoverflow上,仅仅问一个问题而不尝试不会给你带来任何答案。我已经编辑了我的问题,请告诉我我做错了什么?请阅读
change()
css()
jQuery
方法。答案就在那里。请一定要提到你到目前为止在这个问题上做了哪些尝试。在stackoverflow上,仅仅问一个问题而不尝试不会给你带来任何答案。我已经编辑了我的问题,请告诉我哪里出了问题?它工作正常。但是当我返回到后面或下一页,agin进入同一页时,它仍然被单击,应该会进入初始阶段,直到我保存它。如果我也刷新了,它应该需要恢复初始状态(即默认为红色且未勾选),对吗?除非您使用
RequestScoped
ViewScoped
bean,否则您将面临此问题。这就是为什么我的第一条评论是
jQuery
(客户端)解决方案。我认为@Fallup已经给出了您所需要的。它工作正常。但是当我返回到后面或下一页,agin进入同一页时,它仍然处于单击状态,应该会进入初始阶段,直到我保存它。如果我也刷新了,它应该需要恢复初始状态(即默认为红色且未勾选),对吗?除非您使用
RequestScoped
ViewScoped
bean,否则您将面临此问题。这就是为什么我的第一条评论是
jQuery
(客户端)解决方案。我认为@Fallup正好满足了你的需要。
function changeColor(param){
              jQuery("[id*="+param+"]".toggleClass('red'));       
            };