RichFaces ModalPanel

6 respostas
W

Galera tou um duvida…
tenho no formulário um campo para alterar, e gostaria que fosse feito num modalPanel…

o problema que quando abre o modalPanel ele não carrega os dados dos beans :frowning:

<f:view>  
            <h:form> 
                <center>
                    <rich:separator width="967"></rich:separator>
                    
                    <rich:datascroller align="center" for="cargoTb" maxPages="20" style=" width : 900px;" />
                    <rich:dataTable id="cargoTb" rows="5" var="dataTableItem" value="#{cargo.cargos}">
                        <h:column>  
                            <f:facet name="header">  
                                <h:outputText  value=""/>
                            </f:facet>                           
                            <a4j:commandButton value="editar"  
                                               id="confimaexcluir" reRender="cargoTb"  
                                               onclick="javascript:Richfaces.showModalPanel('formulario')">
                                
                            </a4j:commandButton>
                        </h:column>
                        <h:column>  
                            <f:facet name="header">  
                                <h:outputText  value="id"/>  
                            </f:facet>  
                            <h:outputText value="#{dataTableItem.idTbCargos}" />  
                        </h:column>  
                        <h:column>  
                            <f:facet name="header">  
                                <h:outputText  value="Cargo"/>  
                            </f:facet>  
                            <h:outputText value="#{dataTableItem.cargos}"  />  
                        </h:column>
                    </rich:dataTable>
                </h:form>
                <a4j:form>
                    <rich:modalPanel id="formulario" width="600" top="200" >
                        <f:facet name="header">  
                            <h:outputText value="Titulo"/>                      
                        </f:facet>  
                        <f:facet name="controls"> 
                            <f:verbatim>  
                                <center>  
                                    blablabla!  
                                    
                                    <h2>Editar <h:outputText value="#{cargo.cargo.cargos}"/></h2>
                                    <h:outputText value="#{cargo.cargo.idTbCargos}" />
                                    <h:inputText value="#{cargo.cargo.cargos}" />
                                    <br/>
                                    <h:commandButton value="Cancelar" action="cargo" onclick="javascript:Richfaces.hideModalPanel('formulario')"/>
                                    <a4j:commandButton value="Salvar"  
                                                       id="confimaexcluir" reRender="cargoTb"  
                                                       action="#{cargo.mergeCargo}"
                                                       onclick="javascript:Richfaces.hideModalPanel('formulario')">
                                        
                                    </a4j:commandButton>
                                    
                                         
                                    <a href="javascript:Richfaces.hideModalPanel('formulario')">Fechar Janela</a>
                                    
                                </center>  
                            </f:verbatim> 
                        </f:facet>
                        <f:facet name="footer">
                            <h:outputText value="Footer"></h:outputText>
                        </f:facet>
                        
                    </rich:modalPanel>
                </a4j:form>
            </center>            
        </f:view>

Era suposto q formulario modal carregasse o bean, mas ta fazendo… q q ta errado???

obrigado

6 Respostas

G

Opa! Certo mano?

Então, eu respondi essa duvida (ou pelo menos acho que respondi) pra alguem ontem, aqui no forum, mas vamos lá…
O modal é “renderizado” quando a página é carregada, então os dados do bean não vão estar no modal a menos que você dê um reRender nos componentes internos a ele.
No botão que está chamando o modal, coloque a propriedade reRender=“id_do_painel”, e dentro do modal, envolvendo os componentes dele, coloque um painel <14j:outputPanel id=“id_do_painel”> </a4j:outputPanel> …
Isso deve resolver, apesar de não ser a unica solução…
tenta ae…
[]'s

E

Cara você tem duas opções ou deixa o mbean como session ou usa o keepalive do rich faces.

[]s

D

Wakky, tive esse problema…

de uma olhada nos seguintes tópicos:

http://www.guj.com.br/posts/list/97049.java
http://www.guj.com.br/posts/list/96268.java

Abs,

W

Funcionando funcionando :slight_smile:

usei a opção do reRender

[]'s

K


Galera. tenho no menu rich:contextMenu uma acao de visualizacao que vai ate a controller fazer uma consulta. Problema 1: O modal não fica fixo na tela, ou seja, assim que exibe na tela ele fecha sozinho. Problema 2: ele sempre exibe o resultado da pesquisa anterior.

Meu Menu

<rich:contextMenu submitMode="ajax" id="submenu"  attached="false">
				<rich:menuItem reRender="panel" id="link" action="#{BolsaAluno.visualizar}" icon="/pages/imagens/pesquiar.gif">
<a4j:actionparam assignTo="#{BolsaAluno.bean.alunoBean.matricula}"	name="matricula" value="{matricula}" />
					<b>Visualizar</b>
					<a4j:support event="onclick" action="#{BolsaAluno.visualizar}" oncomplete="OpenModal('panel');" reRender="mpform">
						<f:param name="matricula" value="#{BolsaAluno.bean.alunoBean.matricula}"/>
					</a4j:support>
</rich:contextMenu>
<a4j:form id="mpform">
				<rich:separator />
				<br />
				<rich:modalPanel id="panel" width="800" height="300" >
				<a4j:outputPanel>
					<f:facet name="header">
						<h:panelGroup>
							<h:outputText value="Visualização Detalhamento Bolsa"></h:outputText>
							
						</h:panelGroup>
					</f:facet>

					<f:facet name="controls">
						<h:panelGroup>
							<h:graphicImage value="/pages/imagens/fecha.gif" style="cursor:pointer" id="hidelink" />
							<rich:componentControl for="panel" attachTo="hidelink"	operation="hide" event="onclick" />
						</h:panelGroup>
					</f:facet>
	    
     <div align="center" >   
        <rich:dataTable onRowMouseOver="this.style.backgroundColor='#FFEE99'"
							onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'"
							cellpadding="0" cellspacing="0" border="0" width="100%"
							headerClass="DTheader" footerClass="DTfooter"
							styleClass="DTcorpo" id="listagem" rows="25"
							value="#{BolsaAluno.detalhamento}" var="registro"
							rendered="#{BolsaAluno.detalhamento.rowCount > 0}">

							
							<rich:column sortBy="#{registro.numBolsa}">
								<f:facet name="header">
									<h:outputText value="#{msg.header_numBolsa}" />
								</f:facet>
									<h:outputText value="#{registro.numBolsa}"
										styleClass="TextoNormal" />
							</rich:column>

							<rich:column sortBy="#{registro.bolsaBean.descricao}">
								<f:facet name="header">
									<h:outputText value="#{msg.header_bolsa}" styleClass="alinharDireita" />
								</f:facet>
									<h:outputText value="#{registro.bolsaBean.descricao}" styleClass="TextoNormal" />
							</rich:column>
						</rich:dataTable> 
     </div>  
     </a4j:outputPanel>
				</rich:modalPanel>
			</a4j:form>
P

[/quote]

Srs estou com problema usando o ModalPanel (O modal que criei e um formuario de pesquisa). O problema é o seguinte:
Quando clico no commandButton nada acontece simplesmente fica “inativo”. ai substitui pelo a4j:commandLink ai acao de submit funcionou mas nao chama o metodo na minha controller, ou seja , as acções de submite no meu ModalPanel nao estao funcionando. o que posso fazer??

Abaixo segue o codigo

[quote]

<?xml version="1.0" encoding="ISO-8859-1"?>
<!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:f="http://java.sun.com/jsf/core"
	xmlns:a4j="http://richfaces.org/a4j"
	xmlns:rich="http://richfaces.org/rich">

<ui:composition template="/templates/principal.xhtml">

	
	<ui:define name="body">

		<a4j:keepAlive beanName="BolsaAluno" />
		
		<ui:define name="title">
		<f:loadBundle basename="br.unama.kathedrafinanceiro.bolsaaluno.controller.messages" var="msg" />
				#{msg.title} - #{msg.title_altera}
			</ui:define>
		
		
		<h:panelGrid columns="2">

			<h:form>
				<h:panelGrid columns="2">
					<f:facet name="header">
						<h:messages styleClass="TextoErro" />
					</f:facet>

	
					<h:outputText value="#{msg.label_matricula}" styleClass="TextoNegrito" />
						<h:panelGrid columns="3">
							<h:inputText id="matricula" value="#{BolsaAluno.bean.alunoBean.matricula}" styleClass="caixaTextoNaoEdit" size="20" readonly="true" />
							<h:outputText value=" - " />
							<h:inputText id="nome" value="#{BolsaAluno.bean.alunoBean.nome}"	readonly="true" size="90" styleClass="caixaTextoNaoEdit" />

<!--  Chamada para o modal atraves do commandButton  -->

						<a4j:commandButton id="link"  value="...">
						<rich:componentControl  attachTo="link" event="onclick" for="panel"	operation="show"/>
						<a4j:support event="onclick" onsubmit="true"/> 
						</a4j:commandButton> 
						</h:panelGrid>
						
						<h:outputText value="#{msg.label_tipoBolsa}" styleClass="TextoNegrito" />
						<h:panelGrid columns="1">
						<h:selectOneMenu value="#{BolsaAluno.bean.bolsaBean.tipoBolsaBean.idTpBolsa}" valueChangeListener="#{BolsaAluno.atualizarComboBolsa}" immediate="true" onchange="submit()" >
							<f:selectItems value="#{BolsaAluno.comboTipoBolsa}" />
						</h:selectOneMenu>
						</h:panelGrid>
						
						<h:outputText value="#{msg.label_bolsa}" styleClass="TextoNegrito" />
						<h:panelGrid columns="1">
								<h:selectOneMenu value="#{BolsaAluno.bean.bolsaBean.idBolsa}" >
							<f:selectItems value="#{BolsaAluno.comboBolsa}" />
						</h:selectOneMenu>
						</h:panelGrid>
						
						<h:outputText value="#{msg.label_numBolsa}" styleClass="TextoNegrito" />
						<h:panelGrid columns="1">
							<h:inputText id="numBolsa" value="#{BolsaAluno.bean.numBolsa}" styleClass="caixaTextoNaoEdit" size="5" readonly="true" />
						</h:panelGrid>
						
						<h:outputText value="#{msg.label_percValor}" styleClass="TextoNegrito" />
						<h:panelGrid columns="1">
						<h:selectOneMenu value="#{BolsaAluno.bean.percValor}">
								<f:selectItem itemValue="" />
								<f:selectItem itemLabel="Valor" itemValue="V" />
								<f:selectItem itemLabel="Percentual" itemValue="P" />
						</h:selectOneMenu>
						</h:panelGrid>
						
						<h:outputText value="#{msg.label_valor}" styleClass="TextoNegrito" />
						<h:panelGrid columns="1">
							<h:inputText id="valor" value="#{BolsaAluno.bean.valor}"/>
						</h:panelGrid>
						
						<h:outputText value="#{msg.label_dtInicioBolsa}" styleClass="TextoNegrito" />
						<h:panelGrid columns="1">
						<rich:calendar id="dtInicioBolsa" value="#{BolsaAluno.bean.dtInicioBolsa}" datePattern="dd/MM/yyyy" 
							popup="true" enableManualInput="true" >
						</rich:calendar>
						</h:panelGrid>
						
						<h:outputText value="#{msg.label_dtFimBolsa}" styleClass="TextoNegrito" />
						<h:panelGrid columns="1">
						<rich:calendar id="dtFimBolsa" value="#{BolsaAluno.bean.dtFimBolsa}" datePattern="dd/MM/yyyy"
								popup="true" enableManualInput="true">
						</rich:calendar>
						</h:panelGrid>
						
						<h:outputText value="#{msg.label_situacaoBolsa}" styleClass="TextoNegrito" />
						<h:panelGrid columns="1">
						<h:selectOneMenu value="#{BolsaAluno.bean.situacaoBolsa}">
								<f:selectItem itemValue="" />
								<f:selectItem itemLabel="Ativa" itemValue="A" />
								<f:selectItem itemLabel="Desativada" itemValue="C" />
						</h:selectOneMenu>
						</h:panelGrid>
						
						<h:outputText value="#{msg.label_motivo}" styleClass="TextoNegrito" />
						<h:panelGrid columns="1">
						<h:selectOneMenu value="#{BolsaAluno.bean.motivo}">
								<f:selectItem itemValue="" />
								<f:selectItem itemLabel="Encerrada Normalmente" itemValue="E" />
								<f:selectItem itemLabel="Falta Repasse" itemValue="F" />
						</h:selectOneMenu>
						</h:panelGrid>
						
				</h:panelGrid>
				<h:panelGrid columns="2">
					<h:commandButton action="#{BolsaAluno.inserirSalvar}" value="#{msg.label_botao_gravar}" style=" width : 70px;" />
					<h:commandButton action="#{BolsaAluno.voltar}"	value="#{msg.label_botao_cancelar}" onchange="submit()"	immediate="true" style=" width : 70px;" />
				</h:panelGrid>


<!-- MODAL PANEL -->				
					<rich:modalPanel id="panel" minHeight="178" minWidth="600" height="100" width="500" zindex="2000">
						<f:facet name="header">
							<h:panelGroup>
								<h:outputText value="Pesquisar Aluno"></h:outputText>
							</h:panelGroup>
						</f:facet>

						<f:facet name="controls">
							<h:panelGroup>
								<h:graphicImage value="/pages/imagens/fecha.gif" style="cursor:pointer" id="hidelink" />
								<rich:componentControl for="panel" attachTo="hidelink" operation="hide" event="onclick" />
							</h:panelGroup>
						</f:facet>

						<a4j:form id="pesquisaForm">
						<h:panelGrid columns="4" width="820">
					
							<h:panelGroup>
								<fieldset title="Pesquisa" style="width: 450px;"><legend><h:outputText
									value="Buscar" styleClass="TextoNegrito" /></legend> <h:selectOneMenu
									id="rb_consultapor" value="#{BolsaAluno.opcao}">
									<a4j:support event="onclick" reRender="listagem" />
									<f:selectItem id="op_matricula" itemValue="MATRICULA" itemLabel="Matrícula" />
									<f:selectItem id="op_nome" itemValue="NOME" itemLabel="Nome" />
								</h:selectOneMenu> 
								<h:inputText id="txtbusca" value="#{BolsaAluno.txtBusca}" style=" width : 216px;margin-right:30px" /> 


<!-- AQUI O PROBLEMA DE SUBMITE  -->

									<a4j:commandButton  reRender="panel" id="btnpesquisa" action="#{BolsaAluno.pesquisarAluno}" value="Pesquisar"/>
								</fieldset>
							</h:panelGroup>
							
						</h:panelGrid>
						</a4j:form>
					</rich:modalPanel>

			</h:form>

		</h:panelGrid>
	</ui:define>
</ui:composition>
</html>



segue parte da minha controollerr que tem o metodo que preciso chamar.

public String pesquisarAluno() {
		System.out.println("Chamada do Metodo pesquisarAluno linha 142");
		System.out.println("txtBusca: " +txtBusca);
		lista = null;
		
		if (opcao.isEmpty()){registrarMensagemErro("sem parametros nao há pesquisa");

		} else {Opcoes op= Opcoes.valueOf(opcao);
		switch (op) {
		case MATRICULA:
			// Um objeto da classe Pattern contém a expressão regular desejada
			// que será usada em //
			// uma comparação. Já um objeto da classe Matcher contém os métodos
			// que validarão a string//
			// String, dada uma expressão regular. //

			//apenas caracteres de zero a 9 e podem ocorrer mais vezes 
			Pattern padrao = Pattern.compile("[0-9]+");

			Matcher pesquisa = padrao.matcher(txtBusca);
			if (pesquisa.matches()) {

				alunobean.setNome(null);
				alunobean.setMatricula(txtBusca);
				List<AlunoBean> resultquery = dao.findByAluno(alunobean);
				nenhumregistro = resultquery.isEmpty() ? true:false;

				listaAluno = new ListDataModel(resultquery);
				if (resultquery.isEmpty()) {
					registrarMensagemErro("Não foram encontrados Resultados para sua pesquisa!");
				}

			} else {
				registrarMensagemErro("Você selecionou código Portanto digite Apenas numeros");
			}
			break;
		case NOME:
			//apenas  caracteres entre a-z e A-Z e podem se repetir
			padrao = Pattern.compile("[a-zA-Z]+");
			pesquisa = padrao.matcher(txtBusca);
			if (pesquisa.matches()) {

				alunobean.setMatricula(null);
				alunobean.setNome(txtBusca);
				List<AlunoBean> resultquery = dao.findByAluno(alunobean);
				nenhumregistro = resultquery.isEmpty() ? true:false;

				listaAluno = new ListDataModel(resultquery);
				if (resultquery.isEmpty()) {
					registrarMensagemErro("Não foram encontrados Resultados para sua pesquisa!");
				}

			} else {
				registrarMensagemErro("Não foram encontrados Resultados para sua pesquisa!");
			}
			break;

		}
		}
		txtBusca="";
		return "incluirAluno";
	}
Criado 18 de julho de 2008
Ultima resposta 14 de ago. de 2008
Respostas 6
Participantes 6