Pessoal;
Tenho minha action logo abaixo :
package action;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;
import services.clienteService;
import domain.clienteDomain;
@Namespace(value = "/jsp/paginas")
public class cadastroAction {
/*
* Variáveis.
*/
private String SUCCESS = "success";
public clienteService service;
public clienteDomain cliente;
/*
* Salva os dados do formulário no banco.
*/
@Action(value = "cliente", results = @Result(name = "success", location = "/jsp/paginas/cadastroCliente.jsp"))
public String salvar() {
service.salvar(cliente);
return SUCCESS;
}
/* * Métodos getters e setters.
*/
/**
* @param cliente the cliente to set
*/
public final void setCliente(clienteDomain cliente) {
this.cliente = cliente;
}
/**
* @param service the service to set
*/
public final void setService(clienteService service) {
this.service = service;
}
}
O que ocorre é o seguinte, minha variável service está como null sempre que dou um submit no formulário jsp.
Lembrando que a variável cliente está com todos os atributos preenchidos conforme informado no formulário jsp.
Estou trabalhando com camadas, este service é uma interface e possuo uma classe que implementa ela.
Algiuém tem alguma idéia do que pode estar ocorrendo ?
Obrigado.
Boa noite lucas.
Retire:
[code]
/**
* @param service the service to set
*/
public final void setService(clienteService service) {
this.service = service;
}
[code]
e verifique se o nullpointer está no service ou no salvar.
Até mais.
[quote=edysnipes]Boa noite lucas.
Retire:
[code]
/**
* @param service the service to set
*/
public final void setService(clienteService service) {
this.service = service;
}
[code]
e verifique se o nullpointer está no service ou no salvar.
Até mais.[/quote]
PS: Implemente o ActionSuport em suas Action. Existem vários benefícios como por exemplo tipos de retorno SUCESS, ERROR, INPUT, etc.
[quote=edysnipes][quote=edysnipes]Boa noite lucas.
Retire:
[code]
/**
* @param service the service to set
*/
public final void setService(clienteService service) {
this.service = service;
}
[code]
e verifique se o nullpointer está no service ou no salvar.
Até mais.[/quote]
PS: Implemente o ActionSuport em suas Action. Existem vários benefícios como por exemplo tipos de retorno SUCESS, ERROR, INPUT, etc.[/quote]
A vantagem do strtus 2 é justamente não precisar desse implements…
Quanto ao teu problema, lucas_duzo, fiquei curioso por utilizar o final nos setters.
Até onde sei, a especificação javaBeans (que é incorporada pelo Struts 2), não necessita desse modificador.
Boa tarde.
Valeu pela dica machado.
Mas gostaria que você explicasse os prós e contras do uso do ActionSuport.
Como você seta as mensagens do antigo addActionError() por exemplo?
Abrigado.
[quote=drsmachado][quote=edysnipes][quote=edysnipes]Boa noite lucas.
Retire:
[code]
/**
* @param service the service to set
*/
public final void setService(clienteService service) {
this.service = service;
}
[code]
e verifique se o nullpointer está no service ou no salvar.
Até mais.[/quote]
PS: Implemente o ActionSuport em suas Action. Existem vários benefícios como por exemplo tipos de retorno SUCESS, ERROR, INPUT, etc.[/quote]
A vantagem do strtus 2 é justamente não precisar desse implements…
Quanto ao teu problema, lucas_duzo, fiquei curioso por utilizar o final nos setters.
Até onde sei, a especificação javaBeans (que é incorporada pelo Struts 2), não necessita desse modificador.[/quote]
Bom dia Machado;
Retirei o “final” dos setters, porém continuo com o mesmo problema, meu domain está perfeito, porém o service não !!!
=/
Segui o link http://vonjuliano.wordpress.com/2010/12/07/trabalhando-com-struts-2-de-forma-simples/ para entender um pouco mais struts2…
Obrigado
public clienteService service;
public clienteDomain cliente;
/*
* Salva os dados do formulário no banco.
*/
@Action(value = "cliente", results = @Result(name = "success", location = "/jsp/paginas/cadastroCliente.jsp"))
public String salvar() {
service.salvar(cliente);
return SUCCESS;
}
Pois bem…
O trecho acima é do teu código. Em momento algum você instancia teu service e, a não ser que esteja trabalhando com Spring Framework para fazer a injeção do mesmo, você precisaria fazer um
service = new ClienteService();
Veja que aqui, neste exemplo, ele tem o dao e, no construtor da Action, ele instancia o mesmo:
public CarroAction() {
this.dao = new JdbcCarroDao();
}
Sem que você instancie, ele nunca terá valor, será sempre null.
Ao que me parece, você apenas modificou a estrutura, adicionou um service, baseado na última parte do exemplo.