[Logo] Mentawai Forum - Mentawai Web Framework
  [Search] Search   [Recent Topics] Recent Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 
Form com beans aninhados  XML
Forum Index -> Comentários Gerais
Author Message
kuchma



Joined: 19/04/2006 15:09:46
Messages: 10
Offline

Pessoal,

Qual a melhor forma de exibir os dados de beans aninhados e colecoes em um form?

Exemplo:

Pessoa: nome (string), idade (int) e uma lista de Carro.
Carro: marca (string), ano (int).

Exibir textualmente fica facil com as tags out e list/loop. E para o input? O que eh recomendado?


Marcio Kuchma
saoj



Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline

Não entendi o seu problema.

<mtw:input> ????

Detalha melhor o problema !

Sergio Oliveira

kuchma



Joined: 19/04/2006 15:09:46
Messages: 10
Offline

Vamos la... imagine que tenho as classes Pessoa e Carro:

Code:
public class Pessoa {
 
     private String nome;
     private List<Carro> carroList;
 
     // gets e sets...
 
 }


Code:
public class Carro {
 
     private String modelo;
     private int ano;
 
     // gets e sets...
 
 }


Ai eu tenho essa Action:

Code:
public class ShowAction extends BaseAction {
 
     public String execute() throws Exception {
         Carro c1 = new Carro("Uno", 2000);
         Carro c2 = new Carro("Corsa", 2001);
         Pessoa p = new Pessoa("juquinha");
         p.addCarro(c1); p.addCarro(c2);
         this.output("cliente", p);
         return SUCCESS;
     }
 
 }


Dessa forma eu gostaria de exibir todos esses dados em um formulario HTML:

Code:
<%@ taglib uri="/WEB-INF/lib/mentawai.jar" prefix="mtw" %>
 
 <!-- pseudo-codigo -->
 Nome: <mtw:input type="text" name="cliente.nome" />
 <br/>
 
 <mtw:list value="cliente.carroList">
   <mtw:isEmpty>Sem carros.</mtw:isEmpty>
   <mtw:loop var="carro">
     Modelo: <mtw:input type="text" name="carro.modelo"/><br/>
     Ano: <mtw:input type="text" name="carro.ano"/><br/>
   </mtw:loop>
 </mtw:list>


Talvez eu esteja comendo bola mas nao percebi como exibir os dados dos carros neste caso... qual a maneira mais simples/facil/recomendada? (considerando que depois os dados serao utilizados em outra Action pra atualizar informacoes dos objetos).

Obrigado...


Marcio Kuchma
saoj



Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline

É isso mesmo que vc fez, certo.

Só que não funciona pois o name="carro.nome", não está sendo suportado.

Ele só suporta "carro" e pega do output e/ou do input, ou seja, uma bosta.

Vou consertar isso para a versão 1.3, para funcionar como o mtw:out.


Sergio Oliveira

Lobo


[Avatar]

Joined: 23/01/2006 02:17:14
Messages: 841
Location: Fortaleza-CE
Offline

to usando jstl por enquanto pra esse lance ai, mas quando sair no mentawai vou fazer refactor nao tenho preguiça de fazer nao, é melhor padronizar do que virar samba.


Queria poder participar da equipe do mentawai mas se eu fizer isso eu passo fome aqui no ceará :]



Atenciosamente,
Hélio Frota

Atenciosamente,
Hélio Frota

Helio Frota
10+ Java Programmer
heliofrota.com

Member
Mentawai Developer
kuchma



Joined: 19/04/2006 15:09:46
Messages: 10
Offline

Obrigado pelo retorno Sergio. Era isso mesmo que eu precisava saber. Vou contornar por enquanto com JSTL tambem e acompanhar o desenvolvimento.

Lobo wrote:
t1o usando jstl por enquanto pra esse lance ai, mas quando sair no mentawai vou fazer refactor nao tenho preguiça de fazer nao, é melhor padronizar do que virar samba.  


Obrigado pela manifestacao Helio. Voce poderia mandar um exemplozinho basico de como fazer isso com JSTL? Voce utiliza a JSTL "padrao" ou as tags extras do Jakarta Taglibs?


Marcio Kuchma
Lobo


[Avatar]

Joined: 23/01/2006 02:17:14
Messages: 841
Location: Fortaleza-CE
Offline

Certo , vou simplificar o exemplo que uso para o perguntas freqüêntes no site ok..


Code:
 package bean;
 
 public class Pergunta {
 
     ...
     private String pergunta;
     private String resposta;
     ....
 
     etc ... 
 


Code:
 public String execute() throws Exception {
 	
         //jogo a lista no output pra mostrar com o
         //jstl 
         ArrayList lista = (ArrayList)PerguntaDao.getAll();
 	output.setValue("lista", lista);
 	return SUCCESS;
 
 }
 



Code:
 <c:forEach var="obj" items="${lista}" >
     ${obj.pergunta} <br />
     ${obj.resposta}
 </c:forEach>
 
 ou
 
 <c:forEach var="obj" items="${lista}">
 <c:out value="${obj.pergunta}" /> <br />
 <c:out value="${obj.resposta}" />
 </c:forEach>
 



Espero ter ajudado em alguma coisa.

Atenciosamente,
Hélio Frota

Atenciosamente,
Hélio Frota

Helio Frota
10+ Java Programmer
heliofrota.com

Member
Mentawai Developer
kuchma



Joined: 19/04/2006 15:09:46
Messages: 10
Offline

Lobo wrote:
Certo , vou simplificar o exemplo que uso para o perguntas freqüêntes no site ok.. 


Obrigado Helio. Essa tag c:out eh pra imprimir o valor, certo? (como o out do mtw)

Pra formularios o que voce usa? Estou olhando essa: http://jakarta.apache.org/taglibs/doc/input-doc/index.html


Marcio Kuchma
Lobo


[Avatar]

Joined: 23/01/2006 02:17:14
Messages: 841
Location: Fortaleza-CE
Offline

uso input do html mesmo

<input type="text" name="pergunta" value="${obj.pergunta}" />

que fica funcionando como o antigo desenvolvimento com
scriptlets

<input type="text" name="pergunta"

value="<%=(request.getParameter("pergunta") != null ?

request.getParameter("pergunta") : "" )%>" />

os camspos de data e moeda estou migrando pra
inputDate e inputMoney, os selects também estou
migrando pro select do mentawai como também
a geração de checkboxes dinâmicas, este último
eu fazia um c:ForEach e colocava o checkbox
dentro do laço, mas vi a tag checkboxes do mentawai
e é bem menos verbose.

Atenciosamente,
Hélio Frota



Atenciosamente,
Hélio Frota

Helio Frota
10+ Java Programmer
heliofrota.com

Member
Mentawai Developer
saoj



Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline

Assim que eu resolver isso posto aqui, ok ?


Sergio Oliveira

saoj



Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline

Resolvi o problema do input pegar do escopo certo o valor ao invés de apenas do output e do input.

Coloquei atributos extra e separator que são opcionais para especificar outros atributos:

Code:
 
 <mtw:input extra="asdfsdaf=safsdaf # safsdafas=asfsadf" />
 
 


Por favor baixem e testem !!! (bug nisso seria péssimo !!!)

http://www.mentaframework.org/beta/mentawai.jar

Sergio Oliveira

kuchma



Joined: 19/04/2006 15:09:46
Messages: 10
Offline

Sergio, baixei o JAR mas fui deixar pra ler teu post com calma apenas hoje. Nao entendi esse "extra" - como funcionaria? Pode dar um exemplo simples dentro desse contexto que expliquei anteriormente? Ou o link pra documentacao desses novos atributos, se ja houver - ai eu me viro.


Marcio Kuchma
saoj



Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline

São duas coisas aqui.

Um o seu problema, que foi resolvido.

E outro o problema do extra.

Extra serve para inserir atributos para os quais a tag não possui.

Exemplo, vc tem um atributeo a1 e a2 que a tag input não possui.

Daí vc pode fazer:

Code:
 <mtw:input extra="a1=sdfaf # a2=asdfsaf" />
 




Sergio Oliveira

kuchma



Joined: 19/04/2006 15:09:46
Messages: 10
Offline

Beleza Sergio. Encontrei um outro obstaculo antes: a tag list suporta apenas listas? Nao conheco o codigo do Mentawai, entao nao sei se eh possivel generalizar pra Collection... se nao houver motivo especifico para usar List acho que Collection seria mais adequado.

Estava tentando listar um Set e nao consegui.

Como paliativo fiz um novo metodo pra retornar o Set em uma List.


Marcio Kuchma
saoj



Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline

Realmente. Isso foi mancada minha, pois criei um ListContext (context de lista) ao invés de um CollectionContext (context de collection).

Se bem que ter uma lista ao invés de uma collection, facilita bastante a implementação do PaginatorTag, LoopTag, etc.

Acho que um ListWrapper que recebe um set e simula uma lista resolve o problema rapidamente.

Já modifiquei essa tag para suportar sets agora.

Código beta aqui:

http://www.mentaframework.org/beta/mentawai.jar

OBRIGADO PELA DICA !!!

O que vc tem achado do Menta ??? Pontos fortes e fracos ? Coisas legais e coisas não tão legais ???

Seria muito importante se vc desse sua opinião isenta !


Sergio Oliveira

 
Forum Index -> Comentários Gerais
Go to:   
Powered by JForum 2.1.6 © JForum Team