4

在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<Memur> 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;

      }

}
4

2 回答 2

6

你会注意到ModelAndView有一个构造函数接受一个Map<String, ?>

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

所以构造一个映射来保存模型属性

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

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

mav.addAllObjects(map);

添加所有属性的方法。这些属性最终HttpServletRequest会出现在 JSP 可用的地方。

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

于 2013-09-07T19:39:17.250 回答
2

您可以使用

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";
}
于 2013-09-07T19:47:50.993 回答