这是我的代码:

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从容器获取引用,而不是我自己创建的引用。

我对吗?
提前致谢。

最佳答案

你猜对了。下面的文字来自spring docs:

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";
}

关于spring-mvc - @ModelAttribute批注如何工作?为什么我无法获得值(value)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17362177/

10-13 06:30