以下是我的代码......
@RequestMapping(value = "/submitnewstory", method = RequestMethod.POST)
@ResponseBody
public String save(@ModelAttribute("storyInsertForm") StoryInsertForm uploadForm, HttpSession session, Model map) {
}
HTML代码:
<form:form id="contentForm" class="cssform2" action="submitnewstory" method="post" enctype="multipart/form-data" modelAttribute="storyInsertForm">
</form:form>
发生了什么事?
假设我的模型中有两个字段(在本例中为StoryInsertForm
),即String firstname
和String lastname
。我必须在<form:form>
中声明相同的变量,如下所示
<form:form id="contentForm" class="cssform2" action="submitnewstory" method="post" enctype="multipart/form-data" modelAttribute="storyInsertForm">
<input type="text" name="firstname" id="firstname" />
<input type="text" name="lastname" id="lastname" />
</form:form>
发生的事情是,如果您为第一个输入赋值而忽略第二个输入,则数据甚至不会到达控制器。但是如果你提供所有值,即为两个输入类型文本提供输入,它会找到控制器,一切正常。
另一个观察说,如果你没有声明其中一个字段,即如下所示:
<form:form id="contentForm" class="cssform2" action="submitnewstory" method="post" enctype="multipart/form-data" modelAttribute="storyInsertForm">
<input type="text" name="firstname" id="firstname" />
<!-- <input type="text" name="lastname" id="lastname" /> -->
</form:form>
数据仍会使用上述字段中提供的数据发布(在本例中为firstname)。
摘要
如果已关联html中的字段,则必须在输入类型中输入一些值,否则什么都不会到达控制器。
期待您的帮助。
答案 0 :(得分:0)
我有同样的问题;我无法解决它,但可以通过使用
来绕过它<form></form>
而不是
<form:form></form:form>
希望它有所帮助!
答案 1 :(得分:0)
我的想法,
您还必须绑定表单输入标记以便使用
Spring Form TagLib。
即
<form:form id="contentForm" class="cssform2" action="submitnewstory" method="post" enctype="multipart/form-data" modelAttribute="storyInsertForm">
<form:input path="firstname" id="firstname" />
<form:input path="lastname" id="lastname" />
</form:form>
此外,我不知道您的控制器编码是什么,所以我认为以下几点值得一提 -
1&GT;在作为RequestMethod GET返回页面的函数中,为表单添加模型属性。
在这种情况下,完整编码应为 -
@RequestMapping(value = "/getpage.htm", method = RequestMethod.POST)
public String getPage(Model model){
........
Other Code Snippet
.........
StoryInsertForm uploadForm = new StoryInsertForm();
model.addAttribute(“storyInsertForm”, uploadForm);
return “login”;
}
2 - ;另外将BindingResult参数添加到数据保存方法,否则你应该得到一个异常 -
所以save方法的代码应该是 -
@RequestMapping(value = "/submitnewstory", method = RequestMethod.POST)
@ResponseBody
public String save(@ModelAttribute("storyInsertForm") StoryInsertForm uploadForm, BindingResult result, HttpSession session, Model map) {
...........
Your Save Business Logic and Other DAO Method call etc...
...........
}
我希望,上面的代码可以解决你的问题。