Struts e uma lista de beans para cadastrar

2 respostas
ze_kiefa

O tópico é estranho mas vou tentar explicar.

Tenho os seguintes beans:

public class Artigo{
 private int id;
 private String titulo;
 private String conteudo;
 private Collection<Site> sites;

 // getters e setters omitidos
}

public class Site{
 private int id;
 private String textoLink;
 private String urlLink;
 
 // getters e setters omitidos

}

Segue o Form:

public class ArtigoForm extends ActionForm {
 private Artigo bean;
 private Collection<Site> sites;

 // getters e setters omitidos

 public ArtigoForm(){
  bean = new Artigo();
  sites = new ArrayList();
 }

 public void reset(ActionMapping mapping, HttpServletRequest request){
  bean = new Artigo();
  sites = new ArrayList();
 }
}

E, por fim, o meu formulário (onde está a minha dúvida):

<html:html>
 <head></head>
 <body>
   <html:form action="artigoAction.do" enctype="multipart/form-data">
    <html:hidden property="acao" value="cadastrar"/>
    <html:hidden property="bean.id"/>
    <h2>Cadastro de Artigo</h2>
    <br/>
    <b>Titulo</b>:&lt;html:text property="bean.titulo"/&gt;
    <b>Conteudo</b>:
    <br/>
    &lt;html:textarea property="bean.conteudo" rows="5" cols="70"&gt;&lt;/html:textarea&gt;
    <b>Sites</b>
    <br/>
               &lt;table&gt;
                 &lt;tr&gt;							   
                   &lt;td&gt;Site chamada:&lt;/td&gt;
                   &lt;td&gt;&lt;input type="text" name="textoLink"&gt;&lt;/td&gt;
                 &lt;/tr&gt;
                  &lt;tr&gt;									   &lt;td&gt;Site link:&lt;/td&gt;
                   &lt;td&gt;&lt;input type="text" name="urlLink"&gt;&lt;/td&gt;
                 &lt;/tr&gt;
	&lt;/table&gt;
   <br/>
                  &lt;table&gt;
                 &lt;tr&gt;							   
                   &lt;td&gt;Site chamada:&lt;/td&gt;
                   &lt;td&gt;&lt;input type="text" name="textoLink"&gt;&lt;/td&gt;
                 &lt;/tr&gt;
                  &lt;tr&gt;									   &lt;td&gt;Site link:&lt;/td&gt;
                   &lt;td&gt;&lt;input type="text" name="urlLink"&gt;&lt;/td&gt;
                 &lt;/tr&gt;
	&lt;/table&gt;
   &lt;/html:form&gt;
  &lt;/body&gt;
&lt;/html:html&gt;

Finalmente a(s) dúvida(s): como faço para cadastrar vários sites no mesmo formulário do artigo? A associação do bean com o form está correta?

2 Respostas

ze_kiefa

ze_kiefa:

Finalmente a(s) dúvida(s): como faço para cadastrar vários sites no mesmo formulário do artigo? A associação do bean com o form está correta?

Apenas um adendo: o formulário deve ter capacidade para cadastrar os sites sem um limite pré-definido!

Obrigado.

ze_kiefa

Uma (sugestão) solução.

public class ArtigoForm extends ActionForm {
 private Artigo bean;
 private List<Site> sites;

 // getters e setters omitidos

 public ArtigoForm(){
  bean = new Artigo();
  sites = new ArrayList();
 }

 public void reset(ActionMapping mapping, HttpServletRequest request){
  bean = new Artigo();
  sites = new ArrayList();
 }

 public void setSites(List<Site> sites){
  this.sites = sites;
 }

 public List<Site> getSites(){
  return this.sites;
 }

 public Site getSites(int index)
 {
		if( index <= (this.sites.size()-1) ){
			return (Site)this.sites.get(index);
		}
		
		return null;
 }

 public void setSites(int index, Site site)
 {
		this.site.add( site );
 }
}

Obrigado.

Criado 24 de setembro de 2007
Ultima resposta 25 de set. de 2007
Respostas 2
Participantes 1