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

发布于 2022-09-01 07:29:23 字数 3025 浏览 21 评论 0

spring MVC中使用spring的form标签库,edit.jsp代码如下:

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>

控制器的代码如下:

java@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。请问这是怎么回事?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

奈何桥上唱咆哮 2022-09-08 07:29:23

multipart/form-data这是上传文件使用的编码方式,你的表单当然要设置成enctype=application/x-www-form-urlencoded

从﹋此江山别 2022-09-08 07:29:23

在spring的配置文件中添加了multipartResolver:

xml<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" >
        <property name="maxUploadSize" value="500000" />
</bean>

并在pom.xml中加入了commons-iocommons-fileupload依赖后,可以在multipart/form-data下正常提交表单数据了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文