2012-04-03 5 views
0

Я использую два tags.Both из них имеет одинаковое имя, но разный Idstruts2 <s: doubleselect>

<s:doubleselect id="countryId1" name="country"  list="countriesMap.keySet()" doubleId="cityId1"          doubleName="city" doubleList="countriesMap.get(top)" /> 

<s:doubleselect id="countryId2" name="country"  list="countriesMap.keySet()" doubleId="cityId2"          doubleName="city" doubleList="countriesMap.get(top)" /> 

в действии я попытался получить

country String[] countryArray = ServletRequest.getParameterValues("country"); 

Но я получаю countryArray = null , Я посмотрел на код страницы и нашел такую ​​ситуацию

<select name="country" id="countryId1" onchange="countryId1Redirect(this.options.selectedIndex)"> 
    <option value="USA">USA</option> 
    <option value="Germany">Germany</option> 
</select> 

Я выбрал значение США, но нет selected='selected' собственности.

Как я могу поместить выбранные значения из каждого <select name... в массив?

+0

Не забудьте чтобы принять ответ, если это поможет. :) –

ответ

1

Чтобы получить список значений из элементов с тем же именем, создайте геттеры и сеттеры, соответствующие имени; например:

public class MyAction extends ActionSupport { 

    private List<String> countries; 
    private List<String> cities; 

    public String execute() { 

     if (getCountry() != null && getCity() != null) { 
      for (int i = 0; i < getCountry().size(); i++) { 
       System.out.println("country"+(i+1)+"="+getCountry().get(i)); 
       System.out.println("city"+(i+1)+"="+getCity().get(i)); 
      } 
     } 

     return SUCCESS; 
    } 

    // setCountry matches country 
    public void setCountry(List<String> countries) { 
     this.countries = countries; 
    } 
    public List<String> getCountry() { 
     return countries; 
    } 

    // setCity matches city 
    public void setCity(List<String> cities) { 
     this.cities = cities; 
    } 
    public List<String> getCity() { 
     return cities; 
    } 

} 

Я считаю, что вы можете использовать String[] вместо List<String>, если вам нравится.

не есть способ проверить это на данный момент, но вы можете использовать указательный свойство переменной состояния, чтобы получить индекс итерации, возможно, что-то вроде этого:

<s:iterator value="country" status="stat"> 
    <s:property /> <!-- the country --> 
    <br /> 
    <s:property value="#city[#stat.index]" /> <!-- the city corresponding to the current country --> 
    <br /> 
    <br /> 
</s:iterator> 
+0

геттеры и сеттеры не будут работать вернуть данные в формате XWorkList .. – zhake

Смежные вопросы