Oi pessoal!
Tenho uma classe DAO anotada desta forma:
@Component
@RequestScoped
public class FotoDAO {
// métodos aqui
}
Estou injetando no construtor do Controller desta forma:
@Resource
public class FotoController {
private FotoDAO fotoDAO;
// outras classes
public FotoController(Imagens imagens,Validator validator, FotoDAO fotoDAO ,Result result, ImovelDAO imovelDAO) {
this.imagens = imagens;
this.result = result;
this.validator = validator;
this.imovelDAO = imovelDAO;
this.fotoDAO = fotoDAO;
}
O problema é que este método não funciona com a injeção feita acima:
public void remove(Long idFoto) {
Foto foto = fotoDAO.carrega(idFoto); // NullPointerException nesta linha da fotoDAO.
imagens.remove(foto);
fotoDAO.remove(foto);
// mensagem de Foto removida com sucesso
result.include("mensagem", "Foto removida com sucesso");
// redirecionamento para a página de adição de fotos
result.use(Results.logic()).redirectTo(FotoController.class).adiciona(idImovel);
}
Tomo nullPointerException na linha da fotoDAO.
Só funciona se eu instanciar FotoDAO:
public void remove(Long idFoto) {
FotoDAO fotoDAO = new FotoDAO();
Foto foto = fotoDAO.carrega(idFoto);
imagens.remove(foto);
fotoDAO.remove(foto);
// mensagem de Foto removida com sucesso
result.include("mensagem", "Foto removida com sucesso");
// redirecionamento para a página de adição de fotos
result.use(Results.logic()).redirectTo(FotoController.class).adiciona(idImovel); // não dá pra redirecionar pra adiciona() pq o método remove() não passa id de imóvel por parâmetro, precisaria voltar pra mesma JSP que é adiciona.jsp.
}
Ai funciona.
O outro problema é o que eu comentei na linha do Results.
Abração!