2

这是我的代码:

public ModelAndView login(@ModelAttribute("testVO") TestVO testVO){
    //test the VO work theory
    //testVO = new TestVO();
    testVO.setTestStr("this is my test!");
    return "index/index";
}

当我使用 new 为 testVO 创建对象时。我无法在我的 jsp 页面中获取值。如果我使用 set 方法,它可以工作。

所以,我认为:对象 testVo 已经由 IOC 容器创建,所以 JSP 从容器中获取引用,而不是我自己创建的。

我对吗?先谢谢了。

4

2 回答 2

6

你猜对了。以下文字来自春季文档:

An @ModelAttribute on a method argument indicates the argument should be 
retrieved from the model. If not present in the model, the argument should be
instantiated first and then added to the model.

如果您想自己创建它,您需要明确地将其添加到模型中(如下所示),以便可以在您的 jsp 中使用

public String login(Model model){

    TestVO testVO = new TestVO();
    testVO.setTestStr("this is my test!");

    model.addAttribute("testVO", testVO);
    return "index/index";
}
于 2013-06-28T10:24:52.207 回答
1

伙计,这是对 @ModelAttribute 注释的最佳解释:

http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/mvc.html#mvc-ann-modelattrib-methods

至少阅读两章。这会给你一个理论知识。

你可以在我的博客上找到一个实际的问题:

http://fruzenshtein.com/spring-mvc-form-handling/

希望对你有帮助

于 2013-06-28T12:18:57.593 回答