PrimeFaces-根据有效的用户输入更改p:graphicImage

问题描述 投票:0回答:1

很久没有回到现场了,这个问题可能已经回答了,但是,我确实从一百万个答案中拖了出来。我的问题相当简单,我有一个允许用户输入其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 );
}
java validation primefaces components updating
1个回答
0
投票

问题是event =“ blur”,通过将其更改为event =“ keyup”解决了该问题,但是仅部分解决了该问题。现在,它可以与普通的击键和退格键一起使用,但是与[一起使用,如果我选择一个输入的全部并删除整个内容,则LED不会更新,所以这是新问题,我一直在研究解决方案捕获删除键(包括p:hotkey),均无效。因此,这里的任何帮助都会很好。

另一方面,我是不是在浪费时间重新学习Java EE,它死了吗?
© www.soinside.com 2019 - 2024. All rights reserved.