Iniciante Struts - Comunicação entre Camadas

Ola

Sou iniciante em Struts, e pelo que eu vi, a comunicação entre uma Action e um JSP é feita através de VO e usando Session, assim é o certo ou existe algum jeito mais simples?

por exemplo, na minha action eu jogo pra sessão o valor de um atributo qualquer, exemplo:

  HttpSession session = request.getSession();
  session.setAttribute("nome",testeForm.getNome());

no JSP eu recupero esse valor e mostro na tela, por exemplo

String nome = (String) session.getAttribute("nome");
<b><%=nome%></b>

esse é o melhor jeito (talves o único) de fazer essa comunicação, ou existe um jeito mais fácil? (como o webwork que você apenas cria atributos, métodos get e set e no JSP usa <ww:property…).

Obrigado

Você até pode fazer isso, mas o mais comum é fazer a comunicação usando ActionForm.
Você define seu form no struts-config e na definição da action você diz qual form utilizar.
Por exemplo:

&lt;form-bean name=&quot;ExemploForm&quot; type=&quot;exemplo.form.ExemploForm&quot; /&gt; ... &lt;action path=&quot;/Acao&quot; type=&quot;exemplo.action.ExemploAction&quot; name=&quot;ExemploForm&quot; scope=&quot;request&quot; &gt; ... &lt;/action&gt;

Na sua JSP ao utilizar as tags do struts ele já sabe qual form utilizar e vai popular os valores do form pra vc.

&lt;html&#58;form action=&quot;/Acao&quot;&gt; &lt;html&#58;text property=&quot;nome&quot;/&gt; &lt;/html&#58;form&gt;

Isso é para pegar os valores da jsp na Action, mas você pode fazer o caminho inverso tb. Na sua Action vc popula ser form e redireciona para a jsp, o struts vai popular os campos da jsp com os dados do form.

Você acha muito mais informações aqui http://struts.apache.org/userGuide/index.html

certo Code, valeu pela dica, mas essa parte de Form eu já tinha estudado e estou utilizando com sucesso.
O que eu quero mesmo, é fazer a comunicação entre a minha Action e o JSP, mas não através de dados populados no meu Form e sim outros objetos, como por exemplo um objeto String ou um ArrayList. Como eu disse, no WW é só criar o atributo na Action, fazer o get e o set e dentro do JSP eu uso <ww:property, quero saber se no Struts existe algo do tipo, ou a unica maneira é jogar esse objeto pra HttpSession e depois no JSP eu recupero essa Session

Corrijam-me se eu estiver errado, mas não seria algo assim:

   &lt;bean&#58;write name=&quot;nomeBean&quot; property=&quot;nomeAtributo&quot;/&gt;

:roll:

Não sei se entendi direito, mas você pode, na sua action, inserir um bean na sessão e na sua jsp você pode utilizar a tag bean:write para mostrar o valor do bean passando scope=session. Para manipular Collections tem a tag <logic:iterate>.

Galera,

Vou aproveitar estes tópico, para tirar uma dúvida que sempre tive:

Qdo preciso enviar uma lista do Action para o Jsp, faco o seguinte


HttpSession sessao;
sessao = req.getSession&#40;true&#41;;
sessao.setAttribute&#40;&quot;p_lista&quot;,minhaLista&#41;;

No jsp, exibo a lista usando <logic:iterate>.

Existe alguma forma de passar a lista para o jsp, sem utilizar HttpSession ?

A tag não apareceu no meu post anterior… :wink:

raguiar,
vc pode passar pelo ActionForm ou direto pelo request tb