Olá,
Estou tentando entender como funciona a manipulação de objetos em JSTL. Já li o tópico Manipular objetos JSTL mas não me ajudou muito.
Sei que para criar uma instância de uma classe é preciso adicionar a linha
<jsp:useBean id="pessoa" class="br.com.caelum.bean.Pessoa" />
Imaginei que para exibir os atributos da classe Pessoa, seria necessário apenas importar a biblioteca core e adicionar o código <c:out value="${pessoa.nome}" />
mas quando faço isso, o campo retorna nulo, sem mensagem de erro. Adicionei um SYSO exibindo os gets da classe Pessoa e todos estão devidamente preenchidos com os valores esperados.
Por favor, alguém pode explicar como faço para retornar o valor dos atributos na jsp?
Desde já agradeço.
Abraços!
@JulioCesarr o que você estudo está certo. Não tem problema algum. A captura no bean dentro do JSTL e essa mesmo:
<jsp:useBean id="pessoa" class="br.com.caelum.bean.Pessoa" />
Porém, tem um pequeno detalhe. Lembre-se que toodo JSTL é apenas a apresentação dos valores do objeto. Não e comum executarmos cálculos e etc. dentro dele. Para esta função utilizamos algum ServletHttp. Dentro desta classe realizamos as funções que desejamos e literalmente falando, injetamos o objeto montado, que será associado em seu JSTL, no request.
Primeiramente tenha a certeza de colocar o core tag na página:
<%@ taglib prefix="c"
uri="http://java.sun.com/jsp/jstl/core" %>
EXEMPLO:
/ Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
// Extend HttpServlet class
public class HelloWorld extends HttpServlet {
private Pessoa pessoa;
public void init() throws ServletException
{
pessoa = new Pessoa();
}
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
pessoa.setNome("Joao");
pessoa.setIdade(27);
pessoa.setSexo("Masculino");
request.setAttribute("pessoa", pessoa)
response.sendRedirect("/paginas/dadosPessoa.jsp");
}
public void destroy()
{
// do nothing.
}
}
dadosUsuario.jsp
<jsp:useBean id="pessoa" class="br.com.caelum.bean.Pessoa" />
<p>Primeiro Nome: <c:out value="${pessoa.Nome}"/></p>
<p>Idade Pessoa: <c:out value="${pessoa.idade}"/></p>
Considerações particulares:
Se você está estudando JSTL para prestar suporta a um sistema já existente, é valido. Caso contrário, indico fortemente estudar novas tecnologias como JSF, CDI, PrimeFaces e etc. Você encontra bons materiais de estudo gratuitos no site da caelum.com.br.
1 curtida
Felipe,
Muito obrigado pelo esclarecimento. Na verdade estou apenas estudando a apostila do curso FJ22 e me surgiram essas dúvidas, vou mudar o foco do estudo para as tecnologias que você citou.
Um forte abraço!
Show de bola. Com todo respeito, tem o material da k19 treinamentos que me adaptei legal tb.
Se tiver uma grana e quiser fazer um curso muito bom também, faz o algaworks
Abraços.