ModalPanel no RichFaces não executa action do botão

2 respostas
rabriol

Pessoal eu sei que muitos aqui ja perguntaram algo sobre isso aqui, mas eu estou quebrando a cabeça em um algo muito parecido, porém em todos os tópicos que eu olhei não esta exatamente igual ao meu problema. Irei explicar melhor.

Tenho uma página, com um form e um botão. No momento que clico no botão é excutada um action que chama um managedbean para validar algumas coisas no form, se houver uma inconsistência nos dados eu preciso abrir um modal informando que estão faltando dados, e perguntando se mesmo assim o usuário deseja continuar, com um botão para "SIM" ou "NÃO", e se ele clicar em sim eu chamo a action que vai salvar os dados, mas se ele clicar em nao eu chamo a action que retorna para a tela de form com os campos faltantes.

Acontece que até abre o meu modalpanel, mas quando clico em algum botão "SIM" ou "Não", não acontece nada.

Este botão esta dentro do meu form, e chama a action que valida os trechos escolhidos.

<h:commandButton action="#{cadastrarPassageirosForm.validarTrechos}"
                                        id="reservar"
                                        onclick="javascript:showModalMessage(); javascript:Richfaces.showModalPanel('modalPanelAguarde');" 
                                        onrendered="#{!carrinho.existemRegrasCancelamento}"
                                        styleClass="#{cadastrarPassageirosForm.comprarOnline ? 'reservar' : 'solicitar'}"
                                        value="#{cadastrarPassageirosForm.comprarOnline ? 'reservar >>' : 'solicitar >>'}">

                                        <a4j:support event="onclick" reRender="panelRegraCancelamento, panelRegraCancelamentoModal, panelCarrinhoNaoVazio" 
                                        onsubmit="javascript:showModalMessage(); javascript:Richfaces.showModalPanel('modalPanelAguarde');}" 
                                        oncomplete="javascript:hideModalMessage(); javascript:Richfaces.hideModalPanel('modalPanelAguarde');"/>

                                    </h:commandButton>

no managed bean eu valido.

public String validarTrechos() {
    	if (dadosSessao.isProdutoFacil()) {
			for (TrechoSystur trecho : getDadosSessao().getTrechosSystur()) {
	    		if (trecho.getItemCarrinho() == null) {
	    			FacesContext fc = FacesContext.getCurrentInstance();
	    			String msg = "Ainda faltam trechos para serem informados";
	    			FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, msg);
	    			fc.addMessage("frmCadastrarPassageiros", fm);
	    			return null;
	    		}
	    	}
    	}
    	return reservar();
	}

se o facesContext tiver uma mensagem eu renderizo o meu modalpanel, como segue abaixo

<rich:modalPanel id="trechosAvisoInnerPanel"
                		width="300"
                		tridentIVEngineSelectBehavior="hide"
                		autosized="true"
                		showWhenRendered="true"
                		rendered="#{(not empty facesContext.maximumSeverity) and (facesContext.maximumSeverity eq 'Info')}">
                		<f:facet name="header">
                			<h:outputText value="Aviso"/>
                		</f:facet>
						<h:form id="frmTrechosAviso">
							<table width="100%" border="0" cellpadding="4" cellspacing="1">
								<tr>
									<h:outputText value="Existem trechos sem hotéis, deseja incluir mais hotéis?"/>
								</tr>
								<tr></tr>
								<tr>
								<td style="text-align:center;">
									<a4j:commandButton id="sim"
										value="Sim"
										style="text-align:left;"
										action="#{cadastrarPassageirosForm.voltarPaginaPesquisa}"
										oncomplete="javascript:Richfaces.hideModalPanel('trechosAvisoInnerPanel');return true;"/>
								</td>
								<td style="text-align:center;">
									<a4j:commandButton id="nao"
										style="text-align:right;"
										value="Nao" 
										action="#{cadastrarPassageirosForm.reservar}"
										oncomplete="javascript:Richfaces.hideModalPanel('trechosAvisoInnerPanel');return true;"/>
								</td>
							</tr>
						</table>	
					</h:form>										                                    		
                </rich:modalPanel>

só que se eu clicar em algum destes botões nada acontece, alguém pode me ajudar? ja passou pela mesmo situação?

2 Respostas

JeffersonMendes

Conseguiu resolver??
Estou com o mesmo problema aqui.

LottaLava

Não é possível fazer um requisição dentro de um rich:modalPanel, ele deve ter seu próprio e ficar fora do principal.

Criado 16 de abril de 2012
Ultima resposta 27 de nov. de 2012
Respostas 2
Participantes 3