Problemas com checkbox na displaytag

8 respostas
P

é o seguinte estou utilizando displaytag, eu tava com problemas para exibir os campos marcados com check porem com o decorator resolvi esse problema agora na hora de alterar está acontecendo um problema de chamada da action porque ele consegue pegar o value do check altera no banco porem ao invez de voltar pra tela com o result ele chama a action novamente e aí ao inevez de alterar mantem como estava antes, porem isso não ocorre sempre em determinadas requisições ele executa corretamente e em outras não. alguém sabe dizer o que pode estar acontecendo do porquê em momentos ele chamar uma vez apenas a action como deve ser e em outras chama-la duas vezes. detalhe estou usando struts 2.0

8 Respostas

K

Olá, cara se entendi bem, ele faz o que vc quer e depois chama a mesma Action novamente?
Da uma olhada no “Forward” no arquivo do struts config, vê pra onde ele ta redirecionando.

abraço

P

isso mesmo, o mapeamento ta aparentemente correto eu coloquei para o result ir para a pagina inicial e faz isso corretamente.

K

Tem como você postar o código e o xml do struts config?

P

xml :

<?xml version="1.0" encoding="UTF-8" ?>
<package name="administrativo" namespace="/paginas/administrativo"
	extends="struts-default">

	<action name="listarTipoTelefone"
		class="br.com.vcn.administrativo.action.TipoTelefoneAction"
		method="listar">
		<result name="success">
			/paginas/administrativo/tipoTelefone.jsp
		</result>
	</action>

	<action name="incluirTipoTelefone"
		class="br.com.vcn.administrativo.action.TipoTelefoneAction"
		method="incluir">
		<result>
			/paginas/administrativo/tipoTelefoneForm.jsp
		</result>
	</action>

	<action name="habilitarTipoTelefone"
		class="br.com.vcn.administrativo.action.TipoTelefoneAction"
		method="habilitar">
		<result name="success" type="redirect-action">
			listarTipoTelefone
		</result>
	</action>

	<action name="excluirTipoTelefone"
		class="br.com.vcn.administrativo.action.TipoTelefoneAction"
		method="excluir">
		<result name="success" type="redirect-action">
			listarTipoTelefone
		</result>
	</action>

	<action name="alterarTipoTelefone"
		class="br.com.vcn.administrativo.action.TipoTelefoneAction"
		method="alterar">
		<result name="success">
			/paginas/administrativo/tipoTelefoneForm.jsp
		</result>
	</action>

	<action name="gravarTipoTelefone"
		class="br.com.vcn.administrativo.action.TipoTelefoneAction"
		method="gravar">
		<result name="success" type="redirect-action">
			listarTipoTelefone
		</result>
		<result name="input">
			/paginas/administrativo/tipoTelefoneForm.jsp
		</result>
	</action>

	<action name="excluirTipoTelefone" class="br.com.vcn.administrativo.action.TipoTelefoneAction"
		method="excluir">
		<result name="success" type="redirect-action">
			listarTipoTelefone
		</result>
	</action>

	<action name="pesquisarTipoTelefone"
		class="br.com.vcn.administrativo.action.TipoTelefoneAction"
		method="pesquisar">
		<result>
			/paginas/administrativo/tipoTelefoneLista.jsp
		</result>
	</action>

</package>

jsp:

<%@ taglib uri=“http://displaytag.sf.net” prefix=“display”%>
<%@ taglib uri="/struts-tags" prefix=“s”%>
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>

<s:if test="${not empty listaTipoTelefone}">

<c:set var=“urlAlterarTipoTelefone”>

<s:url action=“alterarTipoTelefone”

namespace="/paginas/administrativo" />

</c:set>
<c:set var="urlExcluirTipoTelefone">
	<s:url action="excluirTipoTelefone"
		namespace="/paginas/administrativo" />
</c:set>

<c:set var="urlHabilitarTipoTelefone">
	<s:url action="habilitarTipoTelefone"
		namespace="/paginas/administrativo" />
</c:set>

<display:table decorator="br.com.vcn.util.Wraper" id="tipoTelefone"
	name="listaTipoTelefone" list="listaTipoTelefone" class="its"
	style="width: 100%;">
	<display:column property="cdTipoTelefone" title="Código"></display:column>
	<display:column property="dsTipoTelefone" title="Nome"></display:column>

	<display:column property="flHabilitado" title=""
		paramId="cdTipoTelefone" paramProperty="cdTipoTelefone"
		href="${urlHabilitarTipoTelefone}"></display:column>

	<display:column paramId="cdTipoTelefone"
		paramProperty="cdTipoTelefone" href="${urlAlterarTipoTelefone}">
		<img alt="Editar" border="0" src="/vcn/Imagens/edit.png" />
	</display:column>

	<display:column paramId="cdTipoTelefone"
		paramProperty="cdTipoTelefone" href="${urlExcluirTipoTelefone}">
		<img alt="Excluir" border="0" src="/vcn/Imagens/delete.png" />
	</display:column>

</display:table>
</s:if>

<s:else>

Nenhum registro encontrado

</s:else>

action:

package br.com.vcn.administrativo.action;

import java.util.Collection;

import persistencia.DaoFactory;

import persistencia.TipoTelefoneDao;

import br.com.vcn.modelo.TipoTelefone;

import com.opensymphony.xwork2.ActionSupport;

public class TipoTelefoneAction extends ActionSupport {

private static final long serialVersionUID = 1L;

private TipoTelefone tipoTelefone;

private Collection<?> listaTipoTelefone;

private String dsTipoTelefone;

private Long cdTipoTelefone;
public String input() {
	return SUCCESS;
}

public String listar() {
	try {
		final DaoFactory fabrica = DaoFactory.getDAOFactory();
		final TipoTelefoneDao dao = fabrica.createTipoTelefoneDao();

		setListaTipoTelefone(null);
		setListaTipoTelefone(dao.listarTodos());
	} catch (Exception e) {
		e.printStackTrace();
	}

	return SUCCESS;
}

public String incluir() {
	return SUCCESS;
}

public String habilitar() {
	try {
		final DaoFactory fabrica = DaoFactory.getDAOFactory();
		final TipoTelefoneDao dao = fabrica.createTipoTelefoneDao();

		tipoTelefone = dao.consultar(this.cdTipoTelefone, false);

		if (tipoTelefone.getFlHabilitado())
			tipoTelefone.setFlHabilitado(false);
		else
			tipoTelefone.setFlHabilitado(true);

		fabrica.iniciarTransacao();
		dao.gravar(tipoTelefone);
		fabrica.commitTransacao();

		listar();
	} catch (Exception e) {
		e.printStackTrace();
	}

	return SUCCESS;
}

public String pesquisar() {
	if (dsTipoTelefone == null) {
		dsTipoTelefone = "";

	} else
		setDsTipoTelefone(this.dsTipoTelefone.toUpperCase());

	try {
		final DaoFactory fabrica = DaoFactory.getDAOFactory();
		final TipoTelefoneDao dao = fabrica.createTipoTelefoneDao();

		setListaTipoTelefone(dao.consultar(this.getDsTipoTelefone(), false));
	} catch (Exception e) {
		e.printStackTrace();
	}

	return SUCCESS;
}

public String alterar() {
	try {
		final DaoFactory fabrica = DaoFactory.getDAOFactory();
		final TipoTelefoneDao dao = fabrica.createTipoTelefoneDao();

		setTipoTelefone(null);
		setTipoTelefone(dao.consultar(this.cdTipoTelefone, false));
	} catch (Exception e) {
		e.printStackTrace();
	}

	return SUCCESS;
}

public String excluir() {
	try {
		final DaoFactory fabrica = DaoFactory.getDAOFactory();
		final TipoTelefoneDao dao = fabrica.createTipoTelefoneDao();

		fabrica.iniciarTransacao();
		dao.excluir(dao.consultar(cdTipoTelefone, false));
		fabrica.commitTransacao();
	} catch (Exception e) {
		e.printStackTrace();
	}
	return SUCCESS;
}

public String gravar() {

	try {
		final DaoFactory fabrica = DaoFactory.getDAOFactory();
		final TipoTelefoneDao dao = fabrica.createTipoTelefoneDao();

		fabrica.iniciarTransacao();
		if (this.getTipoTelefone().getCdTipoTelefone() != null) {
			TipoTelefone t = dao.consultar(getTipoTelefone()
					.getCdTipoTelefone(), false);
			t.setDsTipoTelefone(this.tipoTelefone.getDsTipoTelefone());
			dao.gravar(t);
		} else {
			dao.gravar(this.tipoTelefone);
		}
		fabrica.commitTransacao();
		setTipoTelefone(null);
	} catch (Exception e) {
		e.printStackTrace();
	}
	return SUCCESS;
}

public TipoTelefone getTipoTelefone() {
	return tipoTelefone;
}

public void setTipoTelefone(TipoTelefone tipoTelefone) {
	this.tipoTelefone = tipoTelefone;
}

public Collection<?> getListaTipoTelefone() {
	return listaTipoTelefone;
}

public void setListaTipoTelefone(Collection<?> listaTipoTelefone) {
	this.listaTipoTelefone = listaTipoTelefone;
}

public String getDsTipoTelefone() {
	return dsTipoTelefone;
}

public void setDsTipoTelefone(String dsTipoTelefone) {
	this.dsTipoTelefone = dsTipoTelefone;
}

public Long getCdTipoTelefone() {
	return cdTipoTelefone;
}

public void setCdTipoTelefone(Long cdTipoTelefone) {
	this.cdTipoTelefone = cdTipoTelefone;
}

}

K

Cara aparentimente ta blz… só pra saber é o método “incluirTipoTelefone” que ta dando erro? se for, da um nome para o seu result no struts-config. e vê se é isso.



/paginas/administrativo/tipoTelefoneForm.jsp

P

não é o habillitarTipoTelefone. ele ta sendo chamado ora uma vez ora duas.

K

Cara gostaria mesmo de ajuda-lo, mas não tenho como testar aqui no trabalho. mas debug o código cara. vê se ele ta dando 02 submit seguido, etc.

P

blz cara valew pela força.

Criado 16 de outubro de 2007
Ultima resposta 16 de out. de 2007
Respostas 8
Participantes 2