2013-08-27 1 views
1

Je page jsp avec les détails suivantsStruts 2.0 - obtenir mutiple données par modèle axé sur

<s:form>

Entrez FNAME:
Entrez lname:

Adresse1:

Entrez la ville :
Entrez le code PIN:

Adresse2:

Entrez Ville:
Enter Pin:

Address3:

Entrez Ville:
Enter Pin:

</s:form>

Maintenant je besoin chercher un Toutes les entrées dans un seul objet DTO utilisant la fonction pilotée par le modèle.

Mais comment puis-je obtenir plusieurs entrées de champs d'adresse. La classe DTO contiendra la même chose pour chaque champ d'adresse, c'est-à-dire la ville et la broche. Par exemple: la classe DTO ressemblera:

public class Details { 

String fname; 
String lname; 
String city; 
String pin; 

public String getFname() { 
    return fname; 
} 
public void setFname(String fname) { 
    this.fname = fname; 
} 
public String getLname() { 
    return lname; 
} 
public void setLname(String lname) { 
    this.lname = lname; 
} 
public String getCity() { 
    return city; 
} 
public void setCity(String city) { 
    this.city = city; 
} 
public String getPin() { 
    return pin; 
} 
public void setPin(String pin) { 
    this.pin = pin; 
} 
} 

Ou je peux les obtenir que si j'utilise

String[] city; 
String[] pin; 

également ce qui devrait du nom de la balise d'entrée être. Sera-ce

<input type="text" name="city" /> for all city entries 

ou

est-il une autre option pour obtenir les multiples entrées.

+0

Vous devez utiliser les propriétés indexées de votre modèle. –

+0

juste maintenant quand j'ai essayé d'utiliser String [] city; Chaîne [] pin; Je reçois le contenu – abyin007

+0

mais il ne mappe pas les champs correctement. –

Répondre

2

Si nous supposons que votre forme ressemble à ceci:

public class MyForm { 
    private List<Details> addresses; 
    private String fname; 
    private String lname; 

    public List<Details> getAddresses() { 
     return this.addresses; 
    } 

    public void setAddresses(List<Details> addresses) { 
     this.addresses = addresses; 
    } 

    /* 

    getters and setters for fname and lname properties;  

    */ 
} 

et votre action, qui met en œuvre ModelDriven ressemble à ceci:

public class MyAction extends ActionSupport implements ModelDriven<MyForm> { 
    private MyForm myForm = new MyForm(); 

    public String execute() { 
      /* 

      .... 


      */ 
    } 

    @Override 
    public MyForm getModel() { 
      return this.myform; 
    } 
} 

dans votre fichier JSP, vous pouvez définir ces valeurs suivre:

<%@ taglib prefix="s" uri="/struts-tags"%>
<s:form action="your_action" method="post">

Entrez FNAME: <s:textfield name="fname"/>
Entrez lname: <s:textfield name="lname"/>

Adresse1:

Entrez Ville: <s:textfield name="addresses[0].city"/>
Enter Pin: <s:textfield name="addresses[0].pin"/>

Adresse2:

Entrez Ville: <s:textfield name="addresses[1].city"/>
Entrez Pin: <s:textfield name="addresses[1].pin"/>

Address3:

Entrez Ville: <s:textfield name="addresses[2].city"/>
Entrée Pin: <s:textfield name="addresses[2].pin"/>

</s:form>

Questions connexes