O meu problema é o seguinte:
Quero que ao acessar um jsp um servlet seja chamado imediatamente… Esse servlet apenas executa uma função que retorna uma List…
Quero usar essa list no jsp que chamou o servlet, em um option, que cresce de acordo com a lista, para que apareca uma lista dos objetos pesquisados no servlet para eu selecionar… deu pra entender? ehauheauea
Sei que tem algo a ver com UseBean, mas nao entendi direito como utilizar ele…
public List<Produto> getProdutos(){
if(produtos ==null){
System.out.println("Montando lista de produtos...");
produtos = new DAO<Produto>(Produto.class).listaTodos();
}
return produtos;
}
Cara, a maneira mais fácil seria a tua Servlet chamar a tua JSP.
Assim tu pode fazer tua lógica e setar os atributos da requisição na Servlet e depois dar um forward pra tua JSP.
public List<Produto> getProdutos(){
if(produtos ==null){
System.out.println("Montando lista de produtos...");
produtos = new DAO<Produto>(Produto.class).listaTodos();
}
return produtos;
}
[/quote]
Isso mesmo, uma dropdown de uma lista!
Mas no caso, o maior problema é que eu chamo o servlet no JSP, o servlet me computa essa lista…
Como voltar com ela para o JSP?
Nao entendi direito… o Bean ficaria no servlet e calcularia tudo pra mim? e utilizaria o #{} no jsp?
Porque usa <f:selectItems value="#{produtoBean.produtos}"
no lugar de <f:selectItems value="#{produtoBean.getProdutos}"?
Pelo que entendi você está usando apenas JSP e Servlets, nada de JSF, não é?
E o que você quer fazer é ter uma combo na sua JSP, no qual as opções são definidas a partir de uma lista que foi populada em uma Servlet?
O mais fácil seria você chamar a Servlet antes de exibir a página JSP, para poder setar na requisição as variáveis que você vai precisar.
Esse UseBean que você comentou, se for o jsp:useBean, serve para que você acesse na sua página JSP as propriedades de um objeto que foi setado na requisição pela sua Servlet.
No seu caso será necessário apenas setar uma variável(lista de alguma coisa) na requisição e dar um forward para a sua página JSP.
Ex:
Na Servlet:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<Produto> listaProdutos = new ArrayList<Produto>();
// algum código que preenche a lista de produtos
request.setAttribute("listaProdutos", listaProdutos);
RequestDispatcher view = request.getRequestDispatcher("pagina.jsp");
view.forward(request, response);
}
Na JSP:
<select name="produto" id="produto">
<!-- Utilizando a tag core do JSTL -->
<c:forEach var="produto" items="${listaProdutos}">
<option value="${produto.codigo}">${produto.descricao}</option>
</c:forEach>
</select>
Para acessar a página JSP, basta acessar a Servlet que esta irá redirecionar para a página.
Para fazer o que você disse, de chamar uma Servlet quando a JSP for carregada, você teria que utilizar Ajax.
Como o Dan falou, você poderia utilizar DWR para fazer isso.
Mas te aconselho a aprender primeiro o básico de JSP e Servlet, utilizando apenas JSTL e JSP EL(Expression Language).
Isso tuliomonteazul!
É que to começando com web agora, estou usando apenas JSP e Servlet mesmo, nao sei nada de JSF, ajax e afins…
Entendi melhor o seu codigo agora mas ainda nao consegui hehe
Nao consegui fazer o servlet redirecionar para a JSP…
To em duvida em uma coisa, Coloco o codigo do servlet no processRequest,no doGet ou no doPost?(por enquanto nenhum funcionou hehe)
Connection con = ConnectionBean.getInstance().getConnection();
List<Cidade> lista = new ArrayList<Cidade>();
lista = ViagemDAO.procuraOrigem(con);
request.setAttribute("listaCidades", lista);
RequestDispatcher view = request.getRequestDispatcher("consulta.jsp");
view.forward(request, response);
consulta.jsp
<jsp:include page="cabecalho.jsp"/>
<select name="cidade" id="cidade">
<!-- Utilizando a tag core do JSTL -->
<c:forEach var="cidade" items="${listaCidades}">
<option value="${cidade.idcidade}">${cidade.nomecidade}</option>
</c:forEach>
</select>
<jsp:include page="rodape.jsp"/>
Bom ficar 1hr em um erro idiota, pelo menos faz aprender euahueha
Tava sem a tagLib, adicionei no “cabecalho.jsp”, nao adiantou… apos 1 hora mudando nome de variaveis e tetando de alguma maneira descobrir o jeito de usar isso fui testar colocar o tagLib no consulta.jsp…
Funcionou tranquilamente heuaheuah