向FacesContext添加消息会禁用自动完成功能

时间:2014-05-27 15:50:26

标签: java primefaces autocomplete

我正在尝试在进行自动填充选择时显示消息。它显示了该消息,但是当我再次尝试使用自动完成时,它不会执行我的completeMethod。

查看:

   <p:messages id="gNewDiagnostic" for="guau" escape="false"/>       
            <p:panelGrid columns="2" styleClass="panelGridForm">
                <p:outputLabel value="Patología:" for="pathologyND"/>
                <p:autoComplete id="pathologyND" value="#{newDiagnostic.pathology}" completeMethod="#{newDiagnostic.completeTextPathology}">
                    <p:ajax event="blur" listener ="#{newDiagnostic.warningGest}"/>
                </p:autoComplete>
                <p:outputLabel value="Estado del Diagnóstico:" for="stateDiagnosticND" />
                <p:selectOneMenu id="stateDiagnosticND" value="#{newDiagnostic.stateDiagnostic}">
                    <p:ajax update="gNewDiagnostic" listener="#{newDiagnostic.warningGest}">
                    </p:ajax>
                    <f:selectItem itemLabel="Seleccione un Item" itemValue="" />
                    <f:selectItem itemLabel="Sospecha" itemValue="sospecha" />
                    <f:selectItem itemLabel="Confirmado" itemValue="confirmado" />                    
                </p:selectOneMenu>               
            </p:panelGrid>

Managed Bean:

public void warningGest() {
    boolean type = diseasesFacade.diseaseType(pathology);
    stateGes = true;

    if (type == true && stateDiagnostic.equals("confirmado")) {
        FacesContext.getCurrentInstance().addMessage("guau", new FacesMessage(FacesMessage.SEVERITY_WARN, "Advertencia", "La patología " + pathology + " es una enfermedad GES. "));
        stateGes = false;
    }
}

1 个答案:

答案 0 :(得分:1)

解决。

问题在于嵌套在父窗体中的咆哮。咆哮错过了一些属性,并且在将消息添加到上下文后,属性autoUpdate=true导致所有ajax处理失败。

删除咆哮声解决了问题。