I am using auto-binding
feature for field skills
(Array list) in my View
:
...
<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" `)
...
And this is my model class:
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
}
This is my controller:
@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;
}
}
But when i clicked to submit button, this binding result error
appears:
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
Why Spring expected an array of String
instead of String arraylist
while skills
type is an String arraylist
?