Spring:将带有控制器数据的对象传递给jsp,并从Spring Form提交中获取预先保存的数据

时间:2014-11-13 14:29:23

标签: java spring forms jsp spring-mvc

如果标题听起来令人困惑,我很抱歉,我是一个春天的新手。

我有一个名为AdController的控制器类,我将一个Ad对象传递给ModelAndView中的jsp:

    ModelAndView laView = new ModelAndView("/ad/adAdd3");
    Ad laAd = new Ad();
    laAd.setPrice(100);
    model.put("ad", laAd);

在我的adCreate.jsp中,我允许用户添加有关此广告的更多信息,价格除外。并使用a将Ad对象提交到后端,我的Controller类:

 <form:form modelAttribute="ad" method="post" class="form-horizontal" id="add-ad-form">

问题是,在后端,我收到了除价格以外用户添加的所有内容。我应该从表格提交中获取价格数据吗?我错过了什么吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

Spring MVC是无状态的,因此在您的控制器中,您只能获得从客户端发送的内容。您需要在表单中包含price才能将其发送到服务器(您可以隐藏该字段以防止用户更改它)。但是,这不会阻止某人手动发送所有其他数据的价格(只需稍微更改html代码),因此您需要在服务器端处理此问题。

答案 1 :(得分:0)

Spring MVC根据请求中的参数创建Ad对象的新实例。因此,如果价格值在生成的表单中没有HTML输入,则不会在此新实例中填充该值。

您可以使用<form:hidden path="price"/>标记从表单中传回值。

如果查看HTML页面的来源,您会看到这会在页面中添加<input type="hidden" name="price" value="100"/>