I created the ui: component to use as a popup, so I can create many popups using the standard of this template. The component is just a pop-up window with two buttons (cancel and send) and content that can be redefined, for example, you can see here:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:f="http://java.sun.com/jsf/core" xmlns:p="http://primefaces.prime.com.tr/ui"> <ui:component> <p:dialog widgetVar="#{idPopup}" id="#{idPopup}" modal="#{popup.modal}" draggable="#{popup.modal}" rendered="#{popup.visivel}" visible="#{popup.visivel}" closeOnEscape="false" closable="false" header="#{titulo}" resizable="false" styleClass="autoWidthDialog" showEffect="fade" hideEffect="fade"> <h:panelGroup style="width:100%"> <p:focus /> <ui:insert name="conteudo">Nenhum conteúdo definido!</ui:insert> <h:panelGrid id="#{idPopup}PainelMensagens" style="width:100%"> <p:messages /> </h:panelGrid> <ui:insert name="barraDeBotoes"> <h:panelGroup layout="block" style="width:100%"> <p:commandButton value="CANCELAR" immediate="true" update="@form" style="float:right" action="#{controladorPopup.fechar}" onclick="#{idPopup}.hide();" /> <p:commandButton value="OK" style="float:right" update="@form formAlerta" action="#{controladorPopup.submit}" process="@form" /> </h:panelGroup> </ui:insert> </h:panelGroup> </p:dialog> </ui:component> </html>
The problem occurs when I try to submit a form without filling in the required fields. The correct behavior simply shows a pop-up window with messages, but the dialog is displayed twice, one with messages and one without messages. You can see this behavior here:
this is one use of this template:
<ui:composition template="../templates/popupSubmit.xhtml"> <ui:param name="titulo" value="Buscar pessoa" /> <ui:param name="popup" value="#{modeloPopupBuscaPessoa}" /> <ui:param name="controladorPopup" value="#{controladorPopupBuscaPessoa}" /> <ui:define name="conteudo"> <h:panelGroup> <h:panelGrid columns="2"> <h:outputLabel value="Tipo de cadastro:" style="float:none" /> <h:selectOneMenu value="#{controladorSugestaoPessoa.tipoCadastro}" immediate="true"> <f:selectItems value="#{carregadorTipoCadastro.itens}" /> <f:ajax event="change" immediate="true" /> </h:selectOneMenu> </h:panelGrid> <h:outputText value="Buscar por:" /> <h:selectOneRadio value="#{controladorSugestaoPessoa.tipoBusca}" immediate="true"> <f:selectItems value="#{carregadorTipoBuscaPessoa.itens}" /> <f:ajax event="change" immediate="true" /> </h:selectOneRadio> <p:autoComplete value="#{modeloPopupBuscaPessoa.itemSelecionado}" forceSelection="true" maxResults="10" queryDelay="500" completeMethod="#{controladorSugestaoPessoa.atualizarSugestoes}" var="pessoa" itemLabel="#{pessoa.label}" itemValue="#{pessoa}" converter="#{conversorSelectItem}" /> </h:panelGroup> </ui:define> </ui:composition>
And these are some of them:
<h:form id="cadastroPessoa"> <ui:include src="resources/components/popups/modulo_cadastro/popupNovoCadastroPessoa.xhtml"> <ui:param name="idPopup" value="popupNovoCadastroPessoa" /> </ui:include> <ui:include src="resources/components/popups/modulo_cadastro/popupCadastroPessoa.xhtml"> <ui:param name="idPopup" value="popupEdicaoCadastroPessoa" /> </ui:include> <ui:include src="resources/components/popups/modulo_cadastro/popupBuscaPessoa.xhtml"> <ui:param name="idPopup" value="popupBuscaCadastroPessoa" /> </ui:include> </h:form> <h:form id="cadastroProduto"> <ui:include src="resources/components/popups/modulo_cadastro/popupCadastroProduto.xhtml"> <ui:param name="idPopup" value="popupNovoCadastroProduto" /> </ui:include> </h:form>
Can someone tell me why this is happening?
source share