Como manipular um objeto em JSTL [RESOLVIDO]

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.