Excluir dados no Struts 2

9 respostas
F

Fala ae galera, estou com um pequeno problema na hora de excluir, nao sei onde estou errando…

ognl.OgnlException: target is null for setProperty(null, “id_alunos”, [Ljava.lang.String;@1fcbac1)

listar-alunos.jsp

<c:forEach var="aluno" items="${dao.lista}">
                  <tr class="gradeA">
                      <td>${aluno.nome}</td>
                      <td>${aluno.email}</td>
                      <td class="center"><a href="mostraAlunos?id_alunos=${aluno.id_alunos}"><img src="images/icons/dark/pencil.png" width="14" height="14" /></a></td>
                      <td class="center"><a href="removeAlunos?id_alunos=${aluno.id_alunos}"><img src="images/icons/dark/close.png" width="14" height="14" /></a></td>
                  </tr>  
              </c:forEach>

RemoveAlunosAction.java

package br.com.scb.action;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;

import br.com.scb.dao.AlunosDAO;
import br.com.scb.modelo.Alunos;

public class RemoveAlunosAction {
	
private Alunos alunos;
	
	@Action(value="removeAlunos", results= {
			@Result(name="ok", type="redirectAction", params={"actionName", "listaAlunos"})
	})
	
	public String execute(){
		new AlunosDAO().remove(alunos);
		return "ok";
	}

	public Alunos getAlunos() {
		return alunos;
	}

	public void setAlunos(Alunos alunos) {
		this.alunos = alunos;
	}

}

AlunosDAO

//REMOVER ALUNOS
	
	public void remove(Alunos alunos) {
		String sql = "DELETE FROM alunos WHERE id_alunos = ?";
		PreparedStatement stmt;
		try {
			stmt = connection.prepareStatement(sql);
			stmt.setInt(1, alunos.getId_alunos());
			stmt.execute();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}

Alunos.java

package br.com.scb.modelo;

public class Alunos {
	
	private int id_alunos;
	private String nome;
	private String curso;
	private String matricula;
	private String email;
	
	public int getId_alunos() {
		return id_alunos;
	}
	public void setId_alunos(int id_alunos) {
		this.id_alunos = id_alunos;
	}
	
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	
	public String getCurso() {
		return curso;
	}
	public void setCurso(String curso) {
		this.curso = curso;
	}
	
	public String getMatricula() {
		return matricula;
	}
	public void setMatricula(String matricula) {
		this.matricula = matricula;
	}
	
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}

}

Algum pde me ajudar?
Obrigado!

9 Respostas

jyoshiriro

Mas o registro não foi excluído ou você só vê essa mensagem no log?

Bem, em todo caso tem uns erros no teu código, pelo que você postou:

  1. Você passou um parâmetro de requisição “id_alunos” mas não vejo nenhum “setId_alunos()” na tua action. Acredito que o nome do parâmetro que deveria passar nos teus links seria “alunos.id_alunos”.
  2. Não vi a transação ser aberta e “comitada” no DAO. Isso é feito em algum lugar?

Dica: Se sua Action se chama “RemoveAlunosAction” não precisa mapeá-la com a anotação @Action no método execute. Por convenção ela ficaria mapeada com “remove-alunos”.

Espero ter ajudado.

F

Mesmo eu colocando como parametro aluno.id_alunos=${aluno.id_alunos}

da erro, segue o log!

java.lang.NullPointerException
	br.com.scb.dao.AlunosDAO.remove(AlunosDAO.java:45)
	br.com.scb.action.RemoveAlunosAction.execute(RemoveAlunosAction.java:18)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	java.lang.reflect.Method.invoke(Unknown Source)
	com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:453)
	com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:292)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:255)
	org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
	org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
	com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
	com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
	org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
	org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:510)
	org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
	org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91
jyoshiriro

Simples, tem que ver o que pode ter chego null em AlunosDAO.java (linha 45).

Debug nela! :wink:

F
stmt.setInt(1, alunos.getId_alunos());

essa linha q ta dando erro!
quando eu jogo a id direto ali, deleta!

tipo: stmt.setInt(1, 11);

jyoshiriro

Amigo, você usou debug?

Pelo que você disse, então tá claro que é o objeto “alunos” que está chegando “null” nessa linha.

Rode seu AS no modo debug e seja feliz :wink:

Abraços.

jyoshiriro

E seu parâmetro na JSP deveria ser
alunos.id_alunos
e não
aluno.id_alunos

Já que teu objeto é “alunos” e não “aluno”.

F

jyoshiriro:
E seu parâmetro na JSP deveria ser
alunos.id_alunos
e não
aluno.id_alunos

Já que teu objeto é “alunos” e não “aluno”.

Era isso!!!

putzzzz, valeu!

jyoshiriro

Que ótimo.

Não esqueça do [RESOLVIDO] no título do post, ok?

Abraços.

F

pode deixar!

Criado 24 de março de 2012
Ultima resposta 24 de mar. de 2012
Respostas 9
Participantes 2