如何在Spring中将变量从java传递给jsp

在spring框架中我想将一些变量(对象)传递给jsp页面。 我可以传递一个对象:

ModelAndView modelAndView= new ModelAndView("JspPageName", "message", message); return message 

但是如何从java向jsp发送多个对象。 实际上我知道我可以创建一个对象数组并发送这个数组,但是我想知道这个将数据发送到jsp的最佳方法是:

 @Controller public class DomainEkleController { private DomainJDBCTemplate domainJDBCTemplate; private MemurJDBCTemplate memurJDBCTemplate; @ModelAttribute("Domain") public Domain getDomain() { return new Domain(); } @Autowired @Qualifier("domainJDBCTemplate") public void setDomainJDBCTemplate(DomainJDBCTemplate domainJDBCTemplate) { this.domainJDBCTemplate = domainJDBCTemplate; } @Autowired @Qualifier("memurJDBCTemplate") public void setMemurJDBCTemplate(MemurJDBCTemplate memurJDBCTemplate) { this.memurJDBCTemplate = memurJDBCTemplate; } @RequestMapping(value="/DomainEkle") public ModelAndView domainEkle() { List memurlar=memurJDBCTemplate.getAll(); System.out.println(memurlar); /*for(Memur x:memurlar) { System.out.println(x.getIsim()); }*/ String message = "Hello World, Spring 3.0!"; ModelAndView domain_ekle= new ModelAndView("DomainEkle", "message", message); return domain_ekle; } @RequestMapping(value="/DomainEkle",method=RequestMethod.POST) public ModelAndView domain_eklendi_fonksiyon(@ModelAttribute("Domain")Domain domain, ModelMap model) { model.addAttribute("domain_adi", domain.getDomain_adi()); model.addAttribute("sunucu_no", domain.getSunucu_no()); model.addAttribute("tarih", domain.getTarih()); model.addAttribute("ilgili_memur_no",domain.getIlgili_memur_no()); String message="Domain Kaydi Yapilmistir!"; ModelAndView dm_eklendi=new ModelAndView("DomainEkle","message",message); domainJDBCTemplate.addDomain(domain); return dm_eklendi; } } 

您会注意到ModelAndView有一个接受Map的构造函数

 ModelAndView mav = new ModelAndView("someView", map); 

因此,构建一个映射来保存模型属性

  Map map = new HashMap<>(); map.put("attrib1", someAttrib); 

您可以在此映射中放置尽可能多的键值配对对象,并将其传递给构造函数或调用

 mav.addAllObjects(map); 

方法添加所有属性。 这些属性最终会出现在HttpServletRequest ,它们可供JSP使用。

这最终相当于将ModelModelMap作为参数传递给处理程序方法。 与您在domain_eklendi_fonksiyon()方法中的操作相同。

您可以使用

 mav.addObject("data1", somdeData1); mav.addObject("data2", somdeData2); ... 

添加其他模型属性。

请注意,您不必自己创建ModelAndView对象。 您可以向控制器方法添加Model参数,该方法在调用方法时由Spring添加。 您只需使用此模型即可添加数据。 之后,您只需要返回视图名称。

 @RequestMapping(value="/DomainEkle") public String domainEkle(Model model) { model.addAtribute("data", data); return "myViewName"; }