Dúvidas Struts!

15 respostas
thiagorani

Pessoal,

No index.jsp preciso carregar um combo com dados vindo do banco. Como carregar esse colection e depois encaminhar para o index.jsp? Tem que mapear isso no struts-config.xml, em qual tag, global forward?

Preciso de uma luz!

Valeu

15 Respostas

cariocathi

porque vc nao carrega um vetor numa action e poe como atributo no request e na página vc faz a iteração, eu faço assim…

thiagorani

Entao cariocathi,

Como disparar um action qdo o usuario estiver carregand o index?
É assim mesmo que pretendo fazer!

O index vai trazer pro usuario um combo!

cariocathi

faz um redirect para a tua página .do assim rola uma action e no ActionForm vc seta as propriedades necessárias…

vlw ?

thiagorani

Soh, pensei nisso!
Vou fazer assim!

Mas uma pergunta:
Se eu adicionar um vector no scope, como faço pra ler ele no jsp?

Melhor, tem algum material que mostre como usar as taglib? To meio perdido com elas. Primeira aplicação usando Struts!

Valeu.

cariocathi

é a primeira é uma M#&*(#& mesmo, eu tb sofri, mas nada q o oráculo( google ) não pudesse me responder.

request.setAttribute( "vector", v ); Vector v = (Vector)request.getAttribute( "vector" );

thiagorani

ehehe isso eu sei!

A minha duvida é como pegar um Collection setado no Action, no jsp, e usando as taglib ler esse Collection e mostrar os dados no browser!

ex:

<html:select property="cargo">
            <html:options collection="cargos" property="idCargo" labelProperty="nome"/>
          </html:select>

Esse faz a leitura e monta um combo. Só que nao quero fazer um combo, quero pegar as propriedades e mostra normal.

Compliquei?

cariocathi

<logic:iterate id="idqquer" name="suaCollection"> <tr> <td height="26" width="35%"> <bean:write name="idqquer" property="propriedade do objeto" /> </td> </tr> </logic:iterate>

é isso q vc ker ???

M

Não estou conseguindo usar o iterate.
No meu Action:

ArrayList list = (ArrayList) request.getSession().getServletContext().getAttribute("users");
list.add(request.getAttribute("userForm"));
request.getSession().getServletContext().setAttribute("users", list);
return (mapping.findForward("registration"));

No meu jsp:

...
<logic:notPresent name="users">
 <logic:redirect href="/myStruts/login.jsp"/>
</logic:notPresent>
...
<BODY>
<logic:iterate id="user" collection="users">
 <bean:write name="user" property="name" />
</logic:iterate>
</BODY>

exception:

org.apache.jasper.JasperException: Cannot create iterator for this collection
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:254)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:601)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
	at java.lang.Thread.run(Thread.java:534)

alguém passou por isso ?
obrigado.

thiagorani

Alguem pode me ajudar com esse erro no Struts?

Valeu.

M

que erro ?

thiagorani

Esse
[Cannot find bean under name org.apache.struts.taglib.html.BEAN]

è que coloquei o erro no tópico!
Parece que nao acha o bean, seila!

M

alguma dica para o meu iterate funcionar ? :cry:

R

verifique se vc colocou as declarações das tags no topo do seu jsp como:

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

Já que vc esta usando o <bean:write name=“user” property=“name” />

M

coloquei…

&lt;%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %&gt;
&lt;%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %&gt;
&lt;%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %&gt;

engraçado que se eu coloco da seguinte forma:

&lt;%
 Vector v = &#40;Vector&#41; request.getSession&#40;&#41;.getServletContext&#40;&#41;.getAttribute&#40;"users"&#41;;
%&gt;
&lt;logic&#58;iterate id="user" collection="&lt;%= v %&gt;"&gt;
 &lt;bean&#58;write name="user" property="name"/&gt;
&lt;/logic&#58;iterate&gt;

ele funciona, mas acho que não é a maneira mais correta de se fazer isso.
alguma idéia ?

M

se eu trocar também por:

&lt;html&#58;form action="/viewUser"&gt;
&lt;html&#58;select property="email"&gt;
 &lt;html&#58;options collection="users" property="email" labelProperty="email"/&gt;
&lt;/html&#58;select&gt;
&lt;html&#58;submit /&gt;
&lt;/html&#58;form&gt;

também funciona, só com o iterate da erro :?

Criado 10 de novembro de 2003
Ultima resposta 18 de nov. de 2003
Respostas 15
Participantes 4