Método getValor retorna null

14 respostas
Sergiorsilva

Boa noite pessoa do GUJ,

estou com o seguinte problema, na minha Servlet eu faço:

ativo.setAtivo(request.getParameter("ativo"));

no formulario da minha JSP tá assim:

<input type="text" name="ativo" />

e na minha classe DAO eu faço:

Ativo ativo = new Ativo();

System.out.println(ativo.getAtivo());

e ele imprime null!

Como posso fazer com que o getAtivo não imprima valor null?

14 Respostas

Sergiorsilva

up

Sergiorsilva

Por favor alguém me ajude, ainda não consegui solucionar o problema.

pmlm

Calma! Que eu saiba ainda não há turnos de noite para resolver os problemas que aparecem.

No DAO estás a criar um novo objecto, é óbvio que vai estar null. Tens de passar o objecto da servlet par o DAO.

Sergiorsilva

Como passaria os dados da Servlet para a DAO? Com sessão?

pmlm

Como está agora o teu código?

Sergiorsilva

na JSP e na Servlet não mudei nada, na DAO o meu método inserir está assim:

public class ChamadoDAO extends AbstractDAO {

    @Override
    public void inserir(DomainObject obj) {
        conectar();

        Chamado chamado = (Chamado) obj;

        Ativo ativo = new Ativo();

        System.out.println(ativo.getAtivo());
    }

Eu preciso pegar o valor que eu passei para o Método setAtivo na Servlet!

pmlm

O teu método inserir deve receber então com parâmetro também um Objeto Activo.

public void inserir(DomainObject obj, Activo activo) {
R

Não era pra estar assim??

Ativo ativo = new Ativo();
ativo.setAtivo(request.getParameter("ativo"));
Sergiorsilva

Funcionou!!!

mas queria fazer de outra maneira, vê se você consegue entender!

No meu projeto eu tenho uma classe que eu a denominei DomainObject, todas as minhas classes de Negócio herdam dessa DomainObject. Logo eu tenho uma classe abstrata responsável pelo conexão com o meu banco e implementa uma classe do tipo interface que contém os meus métodos CRUD, no caso o inserir.

Todos as minhas classes DAO herdam da classe abstrata que faz com que os métodos da interface sejam implementados nas DAOs, os método estão são os mesmo para todas as outras DAO porém com comportamento diferente, agora como eu consigo passar outro objeto para o método inserir sem tem que alterar a estrutura do método que tá na interface?

Interface tá assim:

public void inserir(DomainObject obj);

Minha classe abstrata:

public abstract class AbstractDAO implements IDAO {

Att.

Sergiorsilva

Esqueci da DAO:

@Override
    public void inserir(DomainObject obj) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

uma solução proposta que funcionou:

public void inserirAtivo(DomainObject obj1, DomainObject obj2) {
        conectar();

        Chamado chamado = (Chamado) obj1;

        Ativo ativo = (Ativo) obj2;

        System.out.println(ativo.getAtivo());
    }

Entenderam?

pmlm

O que é que é esse “Activo” e o que ele tem a ver com o “Chamado”?

Sergiorsilva

Trata-se de um sistema de HelpDesk, quando ocorre um incidente alguém liga na central de serviço para abrir um novo chamado, na JSP há um formulário que o usuário cadastrante terá que preencher para abertura de um novo chamado que envolve outras classes como ativo.

Além de Ativo, tem setor, departamento, cliente…

Agora consegui resolver o problema com a dica que foi passada, quando eu precisar usar o método inserir por exemplo em outra parte da minha aplicação eu vou usar sobrecarga de método para passar varios objetos como parametro.

pmlm eu agradeço muito, value!

Att.

pmlm

Não será antes composição?

Se um percebi, um Chamado tem um Activo

Sergiorsilva

Não chega a ser uma composição já que o Objeto Ativo não tem que pertencer ao Objeto Chamado, mas minha tabela no banco de Chamados tem foreign key para a tabela de ativos essa é a ligação em que as classes possuem.

Criado 1 de dezembro de 2010
Ultima resposta 2 de dez. de 2010
Respostas 14
Participantes 3