很久没有回到现场了,这个问题可能已经回答了,但是,我确实从一百万个答案中拖了出来。我的问题相当简单,我有一个允许用户输入其ID,名字和姓氏的表格。我设计了两个png图像,一个红色LED和一个绿色LED,当用户在BOTH REQUIRED输入中正确输入条目时,我需要p:graphicImage自动更新,即:如果没有输入,或者只有一个输入,LED将变为红色,如果两个都完成,则LED将变为绿色。
我已经尝试了所有建议的方法。
目前,当验证正确时,我可以将其更改为绿色,但是如果删除一个条目,则led仍为绿色,则不会变回来。这是一些代码。附言是的,我已经尝试过immediate,并删除了图像cache和大多数其他事情……
<h:form id="mainForm">
<p:growl id="grwl" showDetail="false" escape="false" />
<p:outputLabel for="testip0" value="Enter Text"/>
<p:inputText id="testip0"
required="true"
placeholder="text here"
value="#{dummyBean.textEntered0}">
<p:ajax process="@this"
event="blur"
update="grwl"
listener="#{dummyBean.listenUp}" />
</p:inputText>
<p:outputLabel for="testip1" value="Enter More Text"/>
<p:inputText id="testip1"
required="true"
placeholder="more text here"
value="#{dummyBean.textEntered1}">
<p:ajax process="@this"
event="blur"
update="grwl"
listener="#{dummyBean.listenUp}" />
</p:inputText>
<p:graphicImage id="img"
value="#{dummyBean.image}" cache="false"/>
</h:form>
和豆
public void listenUp( AjaxBehaviorEvent event )
{
String offTmp = "/resources/images/red-LED.png";
String onTmp = "/resources/images/green-LED.png";
if( this.textEntered0 == null ||
this.textEntered0.length() < 5 ||
this.textEntered1 == null ||
this.textEntered1.length() < 5 )
{
image = offTmp;
}
else
{
image = onTmp;
}
PrimeFaces.current().ajax().update( "mainForm:img" );
sendMsg( "textEntered0: " + this.textEntered0 + "<br/>" +
"textEntered1: " + this.textEntered1 + "<br/>" +
"img: " + image );
}
/////////////////////////////////////////////////////////////////////////
private void sendMsg( String msg )
{
FacesMessage message = new FacesMessage(
FacesMessage.SEVERITY_INFO, "<html>" + msg, "INFO" );
FacesContext.getCurrentInstance().addMessage( null, message );
}
问题是event =“ blur”,通过将其更改为event =“ keyup”解决了该问题,但是仅部分解决了该问题。现在,它可以与普通的击键和退格键一起使用,但是与[