Изменение ap: graphicImage на основе правильного ввода пользователя - PullRequest
0 голосов
/ 18 апреля 2020

вернувшись на сцену после долгого отсутствия, на этот вопрос, вероятно, был дан ответ, однако я буквально пролистал миллион ответов. Моя проблема достаточно проста, у меня есть форма, которая позволяет пользователю вводить свой идентификатор, имя и фамилию. Я разработал два изображения 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 );
}
...