Не удалось получить значение списка весной 3,0 мвк
Мой regForm.jsp это:
<form:form action="save.html">
form:label path="name">Name *</form:label>
<form:input path="name" />
<form:label path="hobbies">Hobbies *<br />use (ctrl) botton to multiple select </form:label>
<form:select path="hobbies" id="hobbies" multiple="true"
items="${hobList}" itemValue="id" itemLabel="hobbyName">
</form:select>
<input type="submit" value="Submit" onclick="addFormValidate()" />
</form>
Мои бобы
public class User {
private int id;
priavte List<Hobby> hobbies;
//setter getter
}
public class Hobby {
private int id;
private String hobbyName;
//setter getter
}
myController.java
@RequestMapping(value = "/save.html", method = RequestMethod.POST)
public ModelAndView addEmployee(
@ModelAttribute("user") User user BindingResult result) {
System.out.println("name"+user.getName() );
System.out.println(employee.getHobbies()); // getting null
// usrDao.saveUser(user);
return new ModelAndView("redirect:add.html", model);
}
Как я могу получить значение для List из моей формы, чтобы я мог получить значение? ** Что не так в моем коде? **
3 ответа
Решение
Вот код ----
package com.programsji.converter;
import org.springframework.core.convert.converter.Converter;
import com.programsji.bo.Hobby;
public class StringToHobbyConverter implements Converter<String, Hobby> {
@Override
public Hobby convert(String str) {
// I Am Using Fix Hobbies Here, You Can Add Your Own Method to Get
// Hobbies By ID
Hobby hobby = null;
if (str.equals("1")) {
hobby = new Hobby(1, "First Hobby");
} else if (str.equals("2")) {
hobby = new Hobby(2, "Second Hobby");
}
return hobby;
}
}
Зарегистрироваться...
<annotation-driven conversion-service="conversionService" />
<beans:bean id="conversionService"
class="org.springframework.context.support.ConversionServiceFactoryBean">
<beans:property name="converters">
<beans:list>
<beans:bean class="com.programsji.converter.StringToHobbyConverter" />
</beans:list>
</beans:property>
</beans:bean>
Это работает на моем компьютере. если вам нужно, я могу отправить вам исходный код. О регистрации ConversionService вы можете посмотреть в этом примере:
Вам нужен конвертер, который преобразует Hobby id
в hobby
,
@ См. Spring Reference, глава 7.5 Spring 3 Преобразование типов
package org.springframework.core.convert.converter;
public class StringToHobbyConverter implements Converter<String, Hobby> {
Hobby convert(String source) {
return loadHobbyById(Integer.valueOf(source));
}
}
Вам нужно изменить модель пользователя с:
public class User {
private int id;
priavte List<Hobby> hobbies;
//setter getter
}
чтобы:
public class User {
private int id;
priavte List<Integer> hobbies;
//setter getter
}
Затем вы получите список идентификаторов хобби, и вы можете перебрать список и создать новый объект Hobby для каждого идентификатора, если это необходимо. Надеюсь, поможет!!