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!
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:
- 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”.
- 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.
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
Simples, tem que ver o que pode ter chego null em AlunosDAO.java (linha 45).
Debug nela! 
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);
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 
Abraços.
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”.
[quote=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”.[/quote]
Era isso!!!
putzzzz, valeu!
Que ótimo.
Não esqueça do [RESOLVIDO] no título do post, ok?
Abraços.