Как заполнить форму: выбрать и выбрать значение по умолчанию?

У меня есть форма редактирования пользователя с текстовыми полями (имя пользователя, фамилия ...) и выбор стран. У меня проблемы с этим выбором, потому что я не знаю, как лучше его заполнить. Я успешно пробовал заполнить jquery, но не могу выбрать значение по умолчанию с помощью commandName.

<form:form method="POST" commandName="user" action="registerUser.html">
<form:errors path="*" cssClass="errorblock" element="div" />
    <spring:message code="app.user.username"/><form:input path="username" /><form:errors path="username" cssClass="error" /><br/>
    <spring:message code="app.user.firstname"/> <form:input type="text" path="firstName" /> <form:errors path="firstName" cssClass="error"/><br/>
    <spring:message code="app.user.password"/> <form:input type="password" path="password" /><form:errors path="password" cssClass="error"/><br/>
    <spring:message code="app.user.repassword"/> <form:input type="password" path="confirmPassword" /><form:errors path="confirmPassword" cssClass="error"/><br/>
    <spring:message code="app.user.email"/> <form:input type="text" path="email" /><form:errors path="email" cssClass="error"/><br/>
    <spring:message code="app.user.country"/> <form:select path="isoCode" items="${countryList}"/><form:errors path="isoCode" cssClass="error"/><br/>
    <input type="submit" value="Enviar" />
</form:form>

Я просмотрел это руководство, поэтому я попытался использовать карту, но я не знаю, как вернуть данные, которые будут доступны в jsp, потому что в учебнике используется SimpleFormController, но я не хотел бы кодировать SimpleFormController для каждой формы. Это мой контроллер, чтобы вернуть представление формы, и у меня есть еще один, чтобы поймать отправку.

@RequestMapping(method=RequestMethod.GET, value="/editUserForm")
 public String recordUserRequestHandler(ModelMap model) throws Exception {
    model.addAttribute("user", new User());
    Map<String, Map<String, String>> referenceData = new HashMap<String, Map<String, String>>();
    Map<String, String> country = new LinkedHashMap<String, String>();
    country.put("US", "United Stated");
    country.put("CHINA", "China");
    country.put("SG", "Singapore");
    country.put("MY", "Malaysia");
    referenceData.put("countryList", country);
    return "EditUserForm";
 }

Можно ли передать referenceData в jsp для доступа с помощью формы: select?

<spring:message code="app.user.country"/> <form:select path="isoCode" items="${countryList}"/><form:errors path="isoCode" cssClass="error"/><br/>

person mannuk    schedule 21.06.2013    source источник


Ответы (1)


Также вам не нужно использовать hashmap для выбора. Лично я использую простой список с beans, который содержит мои параметры выбора.

открытый класс ListOption {частный идентификатор строки; частное строковое имя;

public ListOption(String id, String name) {
    this.id = id;
    this.name = name;
}

public ListOption() {
}

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

}

в вашем контроллере

List<ListOption> selectOptions = new List<ListOption>();
// add Your options 
selectOptions.add(new ListOption("id","value");

затем поместите объект isoCode в вашу модель с желаемым (выбранным) значением, тогда spring сможет пометить значение как выбранное.

в вашем jsp

 <form:select path="isoCode" items="${countryList}" itemValue="id" itemLabel="name"/>
person Josef Procházka    schedule 21.06.2013
comment
Очень интересный подход @Josef, я попробую. Решил, добавив карту к данным модели. Я собираюсь отредактировать свой собственный пост с решением, но я приму ваше решение как правильное, потому что вы потрудились ответить мне. Спасибо - person mannuk; 21.06.2013
comment
хорошо работает, спасибо. Где вы размещаете эти утилиты, например вариант «Список»? потому что у меня есть другие, такие как метод, который добавляет корень списка json. Я хотел бы следовать передовой практике - person mannuk; 21.06.2013
comment
Я помещаю его в банку с формами, но это зависит от структуры проекта. - person Josef Procházka; 21.06.2013