Executar Action e fechar popup (Struts)

2 respostas
Marques

Pessoal,

No javascript abaixo quero executar uma action e fechar essa janela que abre num popup. O problema é que se executo o action não consigo fechar o popup e se fecho o popup nao executo a action. Já coloquei as linhas que estão comentadas do javascript e nada…
E se coloco o o window.close antes do submit ele naum executa o meu action.

O que fazer? Entrei na fase de desespero…

Sds,

JM

<%@ include file="Header.jsp" %>
<script type=text/javascript>
function fechapopup() {		
	//document.forms[0].target="../cadEmpresaForm.do?redCode=cadEmpresa";
	//document.form[0].target="/slc/pages/CadEmpresas.jsp"	
	document.form[0].submit();
	window.close();
	}
</script>

<layout:html>
	<layout:form action="/cadEmpresa" styleClass="FORM">			
		<layout:pager maxPageItems="7">
			<layout:collection 
					name="empresas"
					id="nomeEmpresa"
					styleClass="FORM">					
  				<layout:collectionItem title="display.cod" property="codEmpresa" sortable="true"/>
  				<layout:collectionItem title="display.empresa" width="400" property="nomeEmpresa" sortable="true"/>
				<layout:collectionItem title="display.selecionar" property="nomeEmpresa"><center>									
					<layout:link href="../cadEmpresa.do?metodo=cadEmpresa"															
							onclick="fechapopup();"													 
							paramId="codEmpresa"
							paramName="nomeEmpresa" 
							paramProperty="codEmpresa">
						<layout:img srcName="edit.gif" border="0"/>				
					</layout:link></center> 			
  				</layout:collectionItem>
			</layout:collection>			
		</layout:pager>
	</layout:form>
</layout:html>

2 Respostas

smota

Pense comigo … vc manda o browser submeter e imediatamente fecha o browser, serviu pra alguma coisa?

Vc tem 2 opcoes:

  1. Envia os dados do formulario para a janela que o abriu (veja window.opener) e submete o formulario la, podendo assim fechar imediatamente o popup;
  2. Submete o formulario no popup mas quem da o comando pra fechar o browser é a pagina que recebeu o submit e nao a pagina do formulario.

Qualquer uma das 2 opcoes é simples de fazer, na internet deve ter quilos de codigo de exemplo, é Javascript puro.

F

Tive esse mesmo problema e resolvi da seguinte forma:

No final no meu Action adicionei a seguinte linha:

request.setAttribute(“flagClose”,“true”);

E no JSP apenas recebo esse valor no request e testo se o mesmo está diferente de nulo e se está como “true”. Em caso afirmativo, tenho certeza que meu Actionfoi executado, portanto posso chamar o window.close(). Exempo:

<% if ( request.getAttribute(flagClose)!= null && request.getAttribute(flagClose).equals(true) ) { %>

<script>window.close();/script>

<% } %>

Espero ter ajudado.

[]'s Fabio Paiva

Criado 24 de março de 2005
Ultima resposta 24 de mar. de 2005
Respostas 2
Participantes 3