2013-08-27 1 views
1

У меня есть страница JSP с следующими деталямираспорки 2,0 - получение Mutiple DATAS через модель ведомых

<s:form>

Введите FName:
Введите LName:

Адрес1:

Введите город :
Введите контакт:

Адрес2:

Введите город:
Enter Pin:

Address3:

Введите город:
Enter Pin:

</s:form>

Теперь мне нужно получить ll записи в один объект DTO с использованием функции, управляемой моделью.

Но как я могу получить несколько записей полей адресов. Класс DTO будет содержать одно и то же для каждого поля адреса, то есть города и булавки. Например: класс DTO будет выглядеть следующим образом:

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; 
} 
} 

Или я могу получить их только, если я использую

String[] city; 
String[] pin; 

И что от имени входного тега должно быть. Будет ли

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

или

Есть ли другой вариант, чтобы получить несколько записей.

+0

Вы должны использовать индексированные свойства модели. –

+0

только сейчас, когда я пробовал использовать String [] city; String [] pin; я получаю содержимое – abyin007

+0

, но он неправильно отображает поля. –

ответ

2

Если мы предположим, что ваша форма выглядит следующим образом:

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;  

    */ 
} 

и ваше действие, которое реализует ModelDriven выглядит следующим образом:

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

    public String execute() { 
      /* 

      .... 


      */ 
    } 

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

в файле JSP вы можете установить эти значения следовать:

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

Введите имя_файла: <s:textfield name="fname"/>
Введите LName: <s:textfield name="lname"/>

ADDRESS1:

Введите Город: <s:textfield name="addresses[0].city"/>
Enter Pin: <s:textfield name="addresses[0].pin"/>

ADDRESS2:

Введите Город: <s:textfield name="addresses[1].city"/>
Введите Pin: <s:textfield name="addresses[1].pin"/>

Address3:

Введите город: <s:textfield name="addresses[2].city"/>
Enter Pin: <s:textfield name="addresses[2].pin"/>

</s:form>