【问题标题】:Spring MVC: How to retrieve data apart from the Model submitted to a viewSpring MVC:如何从提交到视图的模型中检索数据
【发布时间】:2012-06-22 16:47:59
【问题描述】:

我有以下要求。我将模型对象提交给视图,如下所示...

@RequestMapping(value ="/addItem", method = RequestMethod.GET)
     public ModelAndView showContacts() {           
         ModelAndView modelAndView = new ModelAndView("addItem", "command", new Item());
         return modelAndView;
     }

但在发布时,我需要检索返回给我的“项目”对象(模型)之外的值。我不能让这个变量成为 Item 模型对象的一部分,因为它不属于那里。但我需要它返回以便对该值采取行动。我该怎么做呢?

即在我的 JSP 文件中,我有以下字段...

<form:input type="text" path="val1"/>
<form:input type="text" path="val2"/>
<form:input type="text" path="val3"/>

除上述之外,只有字段 val1 和 val2 具有到 Item 对象的映射,而 val3 没有。尽管如此,我还需要将 val3 的值传递回我的控制器。我现在处理 POST 的代码如下,但我不知道如何获取 val3 的值。代码现在无法编译,因为它说在 val3 的 Item 类中没有字段或适当的 getter 方法。

@RequestMapping(value = "/postItem", method = RequestMethod.POST)
    public String postItem(@ModelAttribute("item") Item item , BindingResult result) {
        logger.info("Post Item:");
        return "home";
    }

如何修改上述代码以满足我的要求?

我们将非常感谢您就此事提供一些指导。

【问题讨论】:

    标签: spring model-view-controller spring-mvc


    【解决方案1】:

    您可以将地图作为模型传递,并在其中包含各种不同的东西。您不仅限于单个域对象,构造函数只是为了方便,它不是唯一的方法。有a variation of the constructor

    public ModelAndView(Object view,
                        Map model)
    
        Create a new ModelAndView given a View object and a model.
    
        Parameters:
            view - View object to render (usually a Servlet MVC View object)
            model - Map of model names (Strings) to model objects (Objects). 
            Model entries may not be null, but the model Map may be null if 
            there is no model data.
    

    【讨论】:

    • 哦,好的,非常感谢!不过,快速澄清一下,我是否需要将视图中的路径属性更改为 model1.val1 和 model2.val3 ?
    • @Heshan:如果我理解正确的话,我认为答案是肯定的。当您将对象放入传递给 ModelAndView 的映射中时,键用于命名请求属性。所以在视图中,无论您将键命名为什么,它们都会去。
    猜你喜欢
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    • 2018-05-23
    • 1970-01-01
    • 2015-11-29
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多