我是春天的新手,在spring3.0中创建了一个应用程序 我正在使用注释弹簧。
我想从我的控制器方法列表返回到jsp。该列表将显示在选择框中。以下是控制器和jsp部分的代码。 请帮我理解这一点。
public String showUserForm(ModelMap model)
{
User user = new User();
model.addAttribute(user);
List<String> lookingfor=service.getOptions();
//want to send this "lookingfor" to the jsp
return "welcome";
}
和JSP
<td>
<form:select path="lookingfor">
<form:option value="0" label="Select" />
<form:options items="${lookingfor}" itemValue="lookingfor" itemLabel="lookingfor" /> </form:select>
</td>
在模型中添加用户时,其工作正常,但是当我添加lookingfor属性时。 model.addAttribute(“lookingfor”,lookingfor);
发出以下错误。
SEVERE:Servlet jsp的Servlet.service()抛出异常 org.springframework.beans.NotReadablePropertyException:无效 bean的属性'lookin gfor'[java.lang.String]:Bean属性 'lookingfor'不是可读的,或者有一个无效的getter方法:是吗 getter的返回类型是否与setter的参数类型匹配?
答案 0 :(得分:1)
您必须将lookingFor列表作为属性添加到ModelMap对象:
model.addAttribute("lookingfor", lookingfor);
还要验证属性“itemValue”和“itemLabel”的用法,因为itemValue和itemLabel都引用了lookingFor列表项的属性。你在两者上都使用相同的值,这是错误的。
答案 1 :(得分:0)
您还可以返回ModelAndView
e.g。
public ModelAndView showUserForm()
{
mv= new ModelAndView("welcome");
User user = new User();
mv.getModel.put("user",user);
List<String> lookingfor=service.getOptions();
//want to send this "lookingfor" to the jsp
mv.getModel().put("lookingfor",lookingfor);
return mv;
}
编辑:在回复下面的评论时,请查看itemValue 这应该是您查找对象的属性之一,请参阅此国家/地区列表示例
<form:options items="${countryList}" itemValue="code" itemLabel="name"/>
其中list是国家/地区对象的列表,代码和名称是国家/地区对象的属性
edit2
所以只是在jsp做
<c:forEach var="item" items="${lookingfor}">
<form:option value="${item}"/>
</c:forEach>
答案 2 :(得分:0)
你也可以这样使用
@RequestMapping("get_vendor_tests.htm")
public ModelAndView getVendorTests(@RequestParam int vendorId,Map<String, Object> map){
try {
map.put("vendor", vendorService.getVendor(vendorId));
return new ModelAndView("vendor_tests","message",map);
} catch (Exception e) {
// TODO Auto-generated catch block
//e.printStackTrace();
logger.error("In vendor tests for vendor Id:"+vendorId+"",e);
return new ModelAndView("error","message", e);
}
}
答案 3 :(得分:0)
使用模型
传回列表public String showUserForm(ModelMap model) {
User user = new User();
model.addAttribute(user);
//want to send this "lookingfor" to the jsp
List<String> lookingfor=service.getOptions();
model.addAttribute("lookingFor", lookingFor);
return "welcome";
}
在你的jsp显示屏中有以下选项:
<form:select path="lookingFor">
<form:option value="-" label="--Please Select"/>
<form:options items="${lookingFor"}"/>
</form:select>