вернувшись на сцену после долгого отсутствия, на этот вопрос, вероятно, был дан ответ, однако я буквально пролистал миллион ответов. Моя проблема достаточно проста, у меня есть форма, которая позволяет пользователю вводить свой идентификатор, имя и фамилию. Я разработал два изображения PNG, один КРАСНЫЙ светодиод и один ЗЕЛЕНЫЙ светодиод, мне нужно, чтобы p: graphicImage автоматически обновлялся, когда пользователь правильно вводит записи во ОБА ТРЕБУЕМЫХ входах, ie: если нет входа или только один вход, светодиод будет красным, если оба будут выполнены, светодиод будет зеленым.
Я попробовал все предложенное.
В данный момент Я могу заставить его изменить цвет на зеленый, когда проверка правильна, но если я удаляю одну запись, индикатор все еще зеленый, он не изменится обратно. Вот код PS Да, я попытался немедленный , и удалив изображение кеш и большинство других вещей ......
<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 );
}