如何在春天将数据从控制器传递到前端

时间:2012-04-04 16:54:52

标签: spring spring-mvc

我是春天的新手,在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的参数类型匹配?

4 个答案:

答案 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>