Método execute

2 respostas
aquilante

Pessoal muito bom dia!

O método execute da minha action sempre será o primeiro método a ser executado certo? Ok! Eu preciso que habilitar, ou melhor, carregar um método apenas uma vez, mas acontece que a toda atualizaçao da página o método é carregado.

Ex:

jsp:

<c:when test="${row.ESCUTA_SOMENTE_PANICO eq true || not empty row.MENSAGEM_PANICO}">
						<a >Habilitar escuta</a>
					&lt;/c:when&gt;

Minha Action:

DynaValidatorForm frm = (DynaValidatorForm) form;
Boolean escuta = (Boolean) frm.get("escuta");
if (escuta) {
	Map parametros = new HashMap();
	String veiculoId = frm.get("veiculoId").toString();
				
	Veiculo veiculo = veiculoService.findByArenaID(Long.valueOf(veiculoId));
	parametros.put("veiculoId", veiculoId);
	parametros.put("telefoneEscuta", veiculo.getTelefoneEscuta());
			
	ConsultaService service = (ConsultaService) getArenaServiceInstance(request, ConsultaService.class);
	ervice.habilitarEscuta(parametros);
	escutaLigada = true;
        // Aqui eu eu faço escuta receber false, para q o laço so execute uma vez, mas qdo página é atualizada escuta tb é atualizada.
	frm.set("escuta", Boolean.FALSE);	
	System.out.println("habilitou a escuta.");
			}

Na minha struts-config eu inicializei escuta como false:

&lt;form-property name="escuta" type="java.lang.Boolean" initial="false"/&gt;

2 Respostas

e-cowboy

Cara, talvez o jsp não esteja repassando o valor da escuta devolta para o action! você declarou o campo que recebe a escuta no jsp?

aquilante

O problema é de escopo escopo. Toda vez q a página é renderizada o variável é zerada tb.

Eu tentei fazer assim:

Boolean escuta = (Boolean) frm.get("escuta");
System.out.println("escuta: " + frm.get("escuta"));
if (escuta) {
				
	Map parametros = new HashMap();
	String veiculoId = frm.get("veiculoId").toString();
				
	Veiculo veiculo = veiculoService.findByArenaID(Long.valueOf(veiculoId));
	parametros.put("veiculoId", veiculoId);
	parametros.put("telefoneEscuta", veiculo.getTelefoneEscuta());
			
	frm.set("escuta", Boolean.FALSE);	//Eu passo false, mas toda vez q a página rederiza volta pra true
	System.out.println("habilitou a escuta.");
			
	request.setAttribute("escuta", escuta);
}
Criado 23 de maio de 2008
Ultima resposta 23 de mai. de 2008
Respostas 2
Participantes 2