2013-06-21 6 views
0

У меня есть пользовательская форма редактирования, которая имеет текстовые поля (имя пользователя, фамилия ..) и выбор стран. У меня проблемы с этим выбором, потому что я не знаю лучшего способа его заполнения. Я пробовал заполнять с 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> 

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

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

можно передать ссылкуДата к jsp для доступа по форме: выбрать?

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

ответ

2

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

общественный класс ListOption { private String id; имя частной строки;

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 в модель с нужной (выбранной) значения, то пружина будет управлять, чтобы отметить значение, как выбрано.

в вашем JSP

<form:select path="isoCode" items="${countryList}" itemValue="id" itemLabel="name"/> 
+0

Очень интересный @Josef я Подход будет попробовать. Я решил это добавить карту к данным модели. Я собираюсь отредактировать свой собственный пост с решением, но я приму ваше решение как правильно, потому что вы потрудились ответить мне. Спасибо – mannuk

+0

добро пожаловать :-) –

+0

он работает хорошо, спасибо. Где вы размещаете эти утилиты, такие как опция «Список»? потому что у меня есть другие, такие как метод, который добавляет корень json-списка. Я хотел бы следовать хорошей практике – mannuk