在struts2的select框中检索值

时间:2011-06-14 09:25:30

标签: java struts2

package vaannila;

import java.util.ArrayList;

import com.opensymphony.xwork2.ActionSupport;

public class RegisterAction extends ActionSupport {

    private String userName;

    private String password;

    private String gender;

    private String about;

    private String country;

    private ArrayList<Country> countryList;

    private String[] community;

    private ArrayList<String> communityList;

    private Boolean  mailingList;

    public String populate() {

        countryList = new ArrayList<Country>();
        countryList.add(new Country(1, "India"));
        countryList.add(new Country(2, "USA"));
        countryList.add(new Country(3, "France"));

        communityList = new ArrayList<String>();
        communityList.add("Java");
        communityList.add(".Net");
        communityList.add("SOA");

        community = new String[]{"Java",".Net"};
        mailingList = true;

        return "populate";
    }

    @Override
    public String execute() {
        return SUCCESS;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getAbout() {
        return about;
    }

    public void setAbout(String about) {
        this.about = about;
    }

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
    }

    public ArrayList<Country> getCountryList() {
        return countryList;
    }

    public void setCountryList(ArrayList<Country> countryList) {
        this.countryList = countryList;
    }

    public String[] getCommunity() {
        return community;
    }

    public void setCommunity(String[] community) {
        this.community = community;
    }

    public ArrayList<String> getCommunityList() {
        return communityList;
    }

    public void setCommunityList(ArrayList<String> communityList) {
        this.communityList = communityList;
    }

    public Boolean getMailingList() {
        return mailingList;
    }

    public void setMailingList(Boolean mailingList) {
        this.mailingList = mailingList;
    }

}

的index.jsp

      <s:select name="country" list="countryList" listKey="countryId"
    listValue="countryName" headerKey="0" headerValue="Country"
    label="Select a country" />

的success.jsp

        Country: <s:property value="country" /><br>

当我在文本框中选择一个值时,它正在检索id而不是名称,即当我选择india时,我得到1而不是印度。

有没有办法检索名称而不是id?

2 个答案:

答案 0 :(得分:1)

必须声明arrayList communityList的类型为Country not String

private ArrayList<Country> communityList;

确保在动作类

中有 getter方法

然后在jsp

中使用以下语法
   <s:iterator value="countryList"> <!-- here myList contains the list of objects -
     <s:property value="countryName" /><br/>
     <s:property value="countryId" /><br/>
   </s:iterator>

根据您编辑的问题,您需要使用countryName作为listKey

<s:select name="country" list="countryList" listKey="countryName" listValue="countryName" headerKey="0" headerValue="Country" label="Select country" />

答案 1 :(得分:0)

确保您拥有countryList的公共getter。如果它仍然无法工作,那么查看输出中是否打印了6 <br/>以验证循环本身是否正在运行。还要检查控制台中的任何异常。