您的位置:首页 > 编程语言 > Java开发

spring mvc中使用spring form标签无法正常提交表单

2017-01-05 13:45 429 查看
spring MVC中使用spring的form标签库,
edit.jsp
代码如下:
<sf:form method="POST" modelAttribute="spitter" enctype="multipart/form-data">
<fieldset>
<table cellspacing="0">
<tr>
<th><sf:label path="fullName">Full name:</sf:label> </th>
<td><sf:input path="fullName" size="15" id="user_full_name" /><br />
<sf:errors path="fullName" cssClass="error" />
</td>
</tr>
<tr>
<th><sf:label path="name">Username:</sf:label> </th>
<td><sf:input path="name" size="15" maxlength="15" id="user_screen_name" />
<small id="username_msg">No spaces, Please.</small><br />
<sf:errors path="name" cssClass="error" />
</td>
</tr>
<tr>
<th><sf:label path="password">Password:</sf:label> </th>
<td><sf:password path="password" size="30" showPassword="true" id="user_password" />
<small>6 characters or more.</small><br />
<sf:errors path="password" cssClass="error" />
</td>
</tr>
<tr>
<th><sf:label path="email">Email Address:</sf:label> </th>
<td><sf:input path="email" size="30" id="user_email" />
<small>In case you forget something.</small><br />
<sf:errors path="email" cssClass="error" />
</td>
</tr>
<tr>
<th></th>
<td>
<sf:checkbox path="updateByEmail" id="user_send_email_newsletter" />
<label for="user_send_email_newsletter">Send me email updates!</label>
</td>
</tr>
<tr>
<th></th>
<td><input name="commit" type="submit" value="Create Account." /></td>
</tr>
</table>
</fieldset>
</sf:form>

控制器的代码如下:
@RequestMapping(method = RequestMethod.GET, params = "new")
public String createSpitterProfile(Model model) {
model.addAttribute(new Spitter());
return "spitters/edit";
}

@RequestMapping(method = RequestMethod.POST)
public String addSpitterFromForm(@Valid @ModelAttribute("spitter")Spitter spitter, BindingResult bindingResult) {
if(bindingResult.hasErrors()) {
return "spitters/edit";
}
spitterService.saveSpitter(spitter);
return "redirect:/spitter/" + spitter.getName();
}

在jsp的
<sf:form method="POST"
modelAttribute="spitter" enctype="multipart/form-data">
语句中,如果
enctype=application/x-www-form-urlencoded
则运行正常;如果调成
multipart/form-data
后,提交表单时不管用户名写的是什么,转到的网页后面显示的用户名都是
null
。请问这是怎么回事?
multipart/form-data
这是上传文件使用的编码方式,你的表单当然要设置成
enctype=application/x-www-form-urlencoded


在spring的配置文件中添加了
multipartResolver
:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" >
<property name="maxUploadSize" value="500000" />
</bean>

并在
pom.xml
中加入了
commons-io
commons-fileupload
依赖后,可以在
multipart/form-data
下正常提交表单数据了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: