Manipular Objetos JSTL

Bom Dia Galera,

Gostaria de um pequeno esclarecimento…

Eu tenho em minha DAO um método que me retorna um objeto X através de um ID…
Em minha página jsp eu possuo a seguinte linha:

    <jsp:useBean id="dao" class="meuPacote.ClasseDAO"/>

Até aqui nenhum problema, eu sei que se eu utilizar a tag: <c:forEach> eu consigo iterar em uma Coleção de Objetos qualquer… a minha dúvida é a seguinte…

Existe alguma tag onde eu consiga manipular um objeto de forma única?
Ou para qualquer manipulação de objetos eu devo usar a forEach? mesmo que meu retorno seja apenas 1 registro?

Agradeço pela ajuda de todos!

:lol:

Tem sim.
Com c:out caso queira “printar” algo do objeto na tela, c:if se quiser fazer uma verificação condicional.

Tem muito material no google, já pesquisou?

Já sim… me desculpe mais acho que minha dúvida não ficou bem clara…

Deixa eu tentar melhorar a explicação…

O que eu to querendo saber é o seguinte:

Se existe alguma tag em JSP ou JSTL para fazer algo semelhante a isso:

    <tagQualquer: id="meuId" class="minhaClasse" value="minhaClasseDAO.getQualquerCoisa(idProMetodo)" />

Para que eu consiga usar o “objeto” id da “minhaClasse” para poder exibir os dados na minha página!

Desde já agradeço pela ajuda!

[:D]

o jsp:useBean não faz isso?

Bom,

eu fiz assim:

  <jsp:useBean id="contato" class="dao.Contato"/>

Até ai tranquis… ele vai criar pra mim o meu objeto da minha classe Contato…

Agora a dúvida… como fazer ele receber o retorno do meu método getContato(String id) que esta na minha classe ContatoDAO ???

Eu até vi a tag property mas não consegui utiliza-la da maneira que necessito…

Valeu pela força!

:smiley:

Com jstl, deve ficar algo assim

<jsp:useBean id="contato" class="dao.Contato"/> 
<c:out value="${contato.id}">

Não?

Certo,

Mas me corrija se eu tiver errado…

Quando usamos o useBean ele cria uma nova instância da classe que informamos, certo?!

Logo a saída do out não iria imprimir o “id” do contato que estou pesquisando… i sim o conteúdo do novo objeto?

Basicamente na minha DAO tem o método getContatoId(String id) que me retorna um objeto da minha Classe Contato…

Como pegar esse retorno e lançalo para dentro de um useBean por exemplo?

:smiley:

Tá usando apenas jsp e servlets?
Sempre que trabalhei com JSTL usava struts 2…

Jsp e Servlets…

Na verdade estou estudando pela apostila da Caelum FJ21 e estou fazendo os exercícios dela…

Será que o código abaixo funcionaria?

<jsp:useBean id="contato" class="modelo.Contato">
		<core:set property="contato" value=${dao.getContatoId("${param.id)"}/>
	</jsp:useBean>	

Eu já fiz os exercícios dela e sei que funcionam.

[quote=pinguin-suni]Bom,

eu fiz assim:

  <jsp:useBean id="contato" class="dao.Contato"/>

Até ai tranquis… ele vai criar pra mim o meu objeto da minha classe Contato…

Agora a dúvida… como fazer ele receber o retorno do meu método getContato(String id) que esta na minha classe ContatoDAO ???

Eu até vi a tag property mas não consegui utiliza-la da maneira que necessito…

Valeu pela força!

:D[/quote]

Você não deve chamar um DAO diretamente na JSP.

O que você deve fazer é:

Criar uma action / Service / Servlet, enfim, depende que framework você está usando…

Que chame o método do DAO, recupera a lista e joga em um dos atributos: request, session ou application.

ex:


public void doGet(HttpServletRequest req, HttpServletResponse resp) {

    List lista = dao.getLista();

    req.setAttribute("lista", lista);

    RequestDispatcher rd = req.getRequestDispatcher("/minhaPagina.jsp");

   rd.forward(req, resp);

}

Então na sua página JSP, você terá esse atributo no escopo de request, e você poderá pegar do jeito que quiser, com EL, scriptlet ou usando o c:out do JSTL:


<c:out value="${requestScope.lista}" />

Eu obrigatoriamente tenho que usar o “requestScope” ? ou se eu utilizar apenar ${lista} iria funcionar também ??

Grato

[quote=pinguin-suni][quote]
Então na sua página JSP, você terá esse atributo no escopo de request, e você poderá pegar do jeito que quiser, com EL, scriptlet ou usando o c:out do JSTL:

&lt;c:out value="${requestScope.lista}" /&gt;  

[/quote]

Eu obrigatoriamente tenho que usar o “requestScope” ? ou se eu utilizar apenar ${lista} iria funcionar também ??

Grato[/quote]

só o ${lista} funciona também.

Muito Obrigado…

Vou testar e retorno o resultado!

:smiley:

Problema resolvido !!!

Obrigado pela ajuda andreiribas!

:smiley: