Я использую auto-binding
функцию для поля skills
(список Array) в моем View
:Spring MVC ArrayList автоматическое связывание Превращается в массив строк
...
<p>
Student's Skills <select name="skills" multiple>
<option value="Java Core"> Java Core </option>
<option value="Spring Core"> Spring Core </option>
<option value="Spring MVC"> Spring MVC </option>
</select>
</p>
(Action is for ` "/MySpringMVCProject3/submitAddmission.html" method="post" `)
...
И это мой класс модели:
public class Student {
...//name, age fields
private ArrayList<String> skills;
public ArrayList<String> getSkills() {
return skills;
}
public void setSkills(ArrayList<String> skils) {
this.skills = skils;
}
//other getter/setters
}
Это мой контролер:
@Controller
public class AdmissionController {
@RequestMapping(value = "/submitAddmission.html", method = RequestMethod.POST)
public ModelAndView submitAdmissionForm(@ModelAttribute("st1") Student student1, BindingResult result) {
if (result.hasErrors()) {
ModelAndView model = new ModelAndView("AdmissionForm");
return model;
}
ModelAndView model2 = new ModelAndView("AdmissionSuccess");
return model2;
}
}
Но когда я нажал, чтобы отправить, но тонн, это binding result error
появляется:
Failed to convert property value of type java.lang.String[] to required type java.util.ArrayList for property skills; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String[]] to required type [java.util.ArrayList] for property skills: no matching editors or conversion strategy found
Почему весна ожидалась array of String
вместо String arraylist
в то время как skills
тип является String arraylist
?
Используйте 'list' вместо' ArrayList' вы должны быть программирование интерфейсов, а не конкретные классами. –
вы также можете опубликовать конфигурацию сервлета, кажется, что некоторые из преобразователей по умолчанию не зарегистрированы, вы настроили настраиваемую службу преобразования –