Como consigo fazer???
ObjetoMeu obj = (ObjetoMeu) request.getAttribute(“obj”);
dá nullPointerException se eu acessar alguma propriedade dele… como posso resolver isso???
Obrigado desde já!!!
Como consigo fazer???
ObjetoMeu obj = (ObjetoMeu) request.getAttribute(“obj”);
dá nullPointerException se eu acessar alguma propriedade dele… como posso resolver isso???
Obrigado desde já!!!
Primeiro vc precisa por esse cara na requisição
ObjetoMeu obj = new ObjetoMeu()
request.setAttribute("obj");
e somente depois vc conseguirá obter ele
ObjetoMeu obj = (ObjetoMeu) request.getAttribute("obj");
Eu já fiz isso… na primeira parte setei o atributo dentro de um servlet e mandei pra jsp e dá jsp eu repasso ele pra outro servlet com alguma informações alterada…
o problema continua =s!!!
Obrigado desde já!!!
Vc quer pegar esses dados de um formulário?
Vc está dando submit na página?
Se sim vc precisa pegar os valores com request.getParameter("<nome_do_campo>"); e setar no objeto.
Ex.
ObjetoMeu obj = new ObjetoMeu();
obj.setNome(request.getParameter("campo_nome"));
obj.setIdade(request.getParameter("campo_idade"));
Agora vc pode manipula o obj, enviar pra camada model (no caso de MVC) etc…
… :arrow:
bem… pegar os dados do formulario eu consigo… mas não é meu caso… o que eu quero pegar é um objeto que tá dentro do jsp… eu quero passar de jsp para servlet… e dentro do servlet da hora se acessar os atributos do objeto NullPointerException… =s
alguém??? até agora não consegui resolver =s!!!
Isso já foi respondido… É como os caras falaram, acho que você precisa ser mais claro com seu problema.
abraço.
Pois é alexandref93,
Ainda não entendemos, vc quer passar dados de um jsp pra um servlet sem ser por POST ou GET.
posta a parte do código jsp onde vc seta o obj e a parte do servlet onde vc tenta recuperá-lo…
Eu quero te ajudar, na verdade eu vou te ajudar, mas vc tem que me ajudar a te ajudar.Quem quer rir tem que fazer rir. shuahsuahsua
Essa é a primeira parte do código:
package com.rs.servlet;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.rs.bo.PerfilBO;
import com.rs.bo.UsuarioBo;
import com.rs.dto.PerfilDTO;
import com.rs.dto.UsuarioDTO;
@WebServlet("/Main")
public class LogOnServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public LogOnServlet() {
super();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
UsuarioDTO usuario = new UsuarioDTO();
UsuarioBo bo = new UsuarioBo();
PerfilBO pbo = new PerfilBO();
usuario.setLogin(request.getParameter("login"));
usuario.setPassword(request.getParameter("password"));
if (bo.isCadastrado(usuario)){
usuario.getPerfil().setFkUsuario(usuario.getId());
if (pbo.buscarPerfilFk(usuario.getPerfil())){
request.setAttribute("perfil", usuario.getPerfil());
RequestDispatcher rq = request.getRequestDispatcher("perfil.jsp");
rq.forward(request, response);
} else {
request.setAttribute("perfil", usuario.getPerfil());
RequestDispatcher rq = request.getRequestDispatcher("cadastroCompleto.jsp");
rq.forward(request, response);
}
} else {
response.sendRedirect("semCadastro.html") ;
}
}
}
Essa é a página jsp que recebe:
<%@page import="com.rs.dto.PerfilDTO"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<jsp:useBean id="perfil" class="com.rs.dto.PerfilDTO"></jsp:useBean>
<html>
<head>
<%perfil = (PerfilDTO) request.getAttribute("perfil"); %>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>Completa seu perfil</h1>
<form action="PerfilServlet" method="get">
Seu nome: <input type="text" name="name">
Seu sobrenome: <input type="text" name="sobrenome">
Sua idade: <input type="text" name="idade">
<%request.setAttribute("perfil", perfil); %>
<input type="submit" value="ok">
</form>
</body>
</html>
E esse é o cara em que a jsp chama:
package com.rs.servlet;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.rs.bo.PerfilBO;
import com.rs.dto.PerfilDTO;
import com.rs.dto.UsuarioDTO;
@WebServlet("/PerfilServlet")
public class PerfilServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public PerfilServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PerfilDTO perfil = (PerfilDTO) request.getAttribute("perfil");
PerfilBO bo = new PerfilBO();
perfil.setNome(request.getParameter("nome"));
perfil.setSobrenome(request.getParameter("sobrenome"));
perfil.setId(Integer.parseInt(request.getParameter("idade")));
bo.cadastrarPerfil(perfil);
request.setAttribute("perfil", perfil);
RequestDispatcher rd = request.getRequestDispatcher("perfil.jsp");
rd.forward(request, response);
}
}
Se tiver alguma coisa que eu tenha que melhorar… pode mandar… ali no caso… uma sevlet manda o objeto para jsp e jsp manda para outra servlet… mas se eu acessar as propriedade na ultima servlet dá erro NullPointerException… eu to errando tudo… ou falta algum detalhe???
Obrigado desde já!!!
Dentro do seu jsp vc usa o request dispacher:
<%
request.setAttribute("nome_atributo", OBJETO);
RequestDispatcher view = request.getRequestDispatcher(sue_mapeamento_servlet);
view.forward(request, response); // o método forward encaminha(repassa) a responsabilidade para o seu servlet
%>
Se vc quiser q seu servlet faça algo e depois continue o processamento do jsp use o include:
<%
request.setAttribute("nome_atributo", OBJETO);
RequestDispatcher view = request.getRequestDispatcher(sue_mapeamento_servlet);
view.include(request, response); // o método include passa para o servlet a solicitação e a resposta, processa seu servlet e retorna para processar seu jsp após esse ponto
%>
Espero ter ajudado.
flw!!!
Mas no caso ele só vai chamar a servlet na hora que eu dá um submit???
Tentei desse jeito… mais desse jeito ele parte direto pra servlet e nem espera o cara digita as informações na página do jsp e dae dá erro por que a servlet tentar acessar esses paramêtros… =s
Putz… não consegui até agora… alguém tem algum sugestão ae???
alexandref93,
Aperentemente seu código está correto, faz assim, roda em modo debug seu sistema e veja se o objeto está setado corretamente.
Outra coisa, tenta usar
(PerfilDTO) request.getParameter("perfil");
ao invpes de
(PerfilDTO) request.getAttribute("perfil");
flws… :arrow:
Estou com um problema parecido. O problema é que eu não consigo gerar o Objeto no próprio JSP.
QUando o submit é clicado, são os parâmetros que são enviados e não o objeto.
O que pelo menos eu quero saber é como quando apertar submit, o dados sejam setados no objeto e o objeto seja carregado na sessão (já que não da pra enviar um objeto como parâmetro).
A unica forma que encontrei pra fazer isso foi criando outro jsp pra pegar os parâmetros enviados pelo formulario do primeiro, setar no objeto criado anteriormente, jogar o objeto na sessão, e só então recuperar o objeto no servlet.
Mas isso parece pouco prático…
Há alguma forma de enviar objetos com formulários ao invés de enviar parâmetros?
Ou seja, há alguma forma de fazer um formulário enviar um objeto?