मेरी नियंत्रक में:मैं स्प्रिंग एमवीसी फॉर्म में चयनित मान कैसे सेट करूं: नियंत्रक से चुनें?
@Controller
public class UserController {
@RequestMapping(value="/admin/user/id/{id}/update", method=RequestMethod.GET)
public ModelAndView updateUserHandler(@ModelAttribute("userForm") UserForm userForm, @PathVariable String id) {
Map<String, Object> model = new HashMap<String, Object>();
userForm.setCompanyName("The Selected Company");
model.put("userForm", userForm);
List<String> companyNames = new ArrayList<String>();
companyNames.add("First Company Name");
companyNames.add("The Selected Company");
companyNames.add("Last Company Name");
model.put("companyNames", companyNames);
Map<String, Map<String, Object>> modelForView = new HashMap<String, Map<String, Object>>();
modelForView.put("vars", model);
return new ModelAndView("/admin/user/update", modelForView);
}
}
चयन फॉर्म फील्ड मेरे विचार में:
<form:form method="post" action="/admin/user/update.html" modelAttribute="userForm">
<form:select path="companyName" id="companyName" items="${vars.companyNames}" itemValue="id" itemLabel="companyName" />
</form:form>
यह मेरी समझ है कि प्रपत्र समर्थन सेम रूप में modelAttribute विशेषता के आधार पर मैप किया जाता था। मैं स्पष्ट रूप से यहाँ कुछ याद कर रहा हूँ।
यह मुद्दा दिखाई देता है मेरी सेटअप से संबंधित नहीं था।समस्या यह थी कि आइटम वैल्यू को कंपनी आईडी संपत्ति पर सेट किया गया था, जबकि तुलना मेरे कंपनी के बैकिंग बीन पर कंपनी के नाम की संपत्ति के साथ की जा रही थी। तो दोनों बराबर नहीं थे, और इसलिए, कोई आइटम चयनित करने के लिए सेट नहीं किया गया था। –