Как извлечь свойства объекта из выбранного объекта в Struts 2


У меня есть список объектов City с полями name и id. Я использую Struts2, и у меня есть страница jsp с тегом select.

<s:select label="Source city" 
          list="cities" 
          name="source"/>

Вот Action класс

public class CalculationAction extends ActionSupport {

    private List<City> cities;
    private DataAccessPerformer dao = new DataAccessPerformer();
    private String source;
    private int sourceId;

    public CalculationAction() {
        cities = new ArrayList<City>();
        // getting cities from database
        setCities(dao.getAllCities());
    }

    // getters and setters
}

City класс

public class City {

    private int id;
    private String name;

    @Override
    public String toString() {
        return getCityName();
    }

    // getters and setters
}

Таким образом, я получаю инициализированное поле source, но не могу получить sourceId.

Я попытался изменить тип поля source на City, но у меня получилось FieldError

Недопустимое значение поля для поля "источник".

Как я должен правильно получить идентификатор?

1 3

1 ответ:

Чтобы задать id значение тега select, необходимо использовать дополнительные атрибуты

<s:select label="Source city" 
          list="cities" 
          listKey="id"
          listValue="name"
          name="sourceId"/>