Problema com a logica para remover elementos no Struts1[RESOLVIDO]

6 respostas
A

pessoal, to com um problema na criação da minha action no Struts 1 para remoção de um elemento do mySql. Se alguem puder me ajudar com a lógica eu agradeço...
segue abaixo os códigos...

este é a action
public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		
		Pessoa pessoa = new Pessoa();
		
		PessoaForm Formulario = (PessoaForm) form;
		
		pessoa.setId(Formulario.getPessoa().getId());
		
		PessoaDAO dao;
		try {
			dao = new PessoaDAO();
			dao.remove(pessoa);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return mapping.findForward("ok");
	}
debugando ela percebi q as informações que vem da jsp nao populam a minha variavel pessoa para que possa ser removido o elemento... esta é a Jsp
<logic:present name="pessoas">
	<table border="1">
		<logic:iterate name="pessoas" id="pessoa">
			<tr>
				<input type="hidden" name="id" values="<bean:write name="pessoa" property="id" />" />
				<td><bean:write name="pessoa" property="nome" /></td>
				<td><bean:write name="pessoa" property="cpf" /></td>
				<td><a href="removePessoa.do?codigo=<bean:write name="pessoa" property="id" />">Remover</a></td>
			</tr>
		</logic:iterate>
	</table>
</logic:present>

todas as tags necessarias estão declaradas..

se alguem puder me ajudar com a logica de remoção eu agradeço..
vlw galera

6 Respostas

BrunoBastosPJ

Preste atenção nas " "

Você deve fazer o hidden assim por exemplo:

&lt;input type='hidden' name='id' values='&lt;bean:write name="pessoa" property="id" /&gt;' /&gt;
A

o problema perciste,
pois ele tras para a variavel formulario ( na action ) somente o ultimo item incluido,
e no momento em q esse era para ser atribuido na variavel pessoa para ser removido, fica tudo com seu valor padrao

string passa null
int passa 0

e nada é removido

alves.Felipe

cara… dentro do teu PessoaForm vc vai ter que criar um Array de id… por ex: int [] arrayId; get e set…
ai no seu jsp…

<input type="hidden" name="arrayId" values="<bean:write name="pessoa" property="id" />" />

é pra funcionar…

A

Galera vlw a ajuda de todos, mas o problema estava na logica na action msm...
estou disponibilizando agora para todos.
talvez possa ajudar alguem....

public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		
		PessoaForm pessoa = new PessoaForm();

                pessoa.setId((request.getParameter("codigo")));
		
		PessoaDAO dao;
		try {
			dao = new PessoaDAO();
			dao.remove(pessoa);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return mapping.findForward("ok");
	}
debugando ela percebi q as informações que vem da jsp devem ser setadas na variavel pessoa esta é a Jsp
<logic:present name="pessoas">
	<table border="1">
		<logic:iterate name="pessoas" id="pessoa">
			<tr>
				<input type="hidden" name="id" values="<bean:write name="pessoa" property="id" />" />
				<td><bean:write name="pessoa" property="nome" /></td>
				<td><bean:write name="pessoa" property="cpf" /></td>
				<td><a href="removePessoa.do?codigo=<bean:write name="pessoa" property="id" />">Remover</a></td>
			</tr>
		</logic:iterate>
	</table>
</logic:present>
A

alves.Felipe

nossa… agora que vi que oq eu escrevi não tem nada a ver… vc só queria recuperar UM id neh…
oq falei era para recuperar vários…mas… ta ai a dica… haha

Criado 27 de julho de 2010
Ultima resposta 28 de jul. de 2010
Respostas 6
Participantes 3