首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring @ModelAttribute无效

Spring @ModelAttribute无效
EN

Stack Overflow用户
提问于 2016-11-06 04:54:57
回答 1查看 1.4K关注 0票数 0

我有一个控制器,其中包括get和post方法。这两种方法都很好,但是当我将@ModelAttribute注释引入POST方法时,它开始给我状态400 --客户端发送的请求在语法上是不正确的。

我不知道我做错了什么。视图看起来如下:

代码语言:javascript
复制
<form:form method="post" action="createIdeaPublic" commandName="idea">
    <table class="form">
        <tr>
            <td align="right"><label for="title">Idea Title</label></td><td align="left"><form:input type="text" path="title" id="title"></form:input></td>
            <td align="right"><label for="email">Your Email</label></td><td align="left"><form:input type="text" path="requestorEmail" id="requestorEmail" class="emails"></form:input></td>
        </tr>


        <tr>
            <td align="right"><label for="partnerEmail">CI Contact Email</label></td><td align="left"><form:input type="text" path="cIInitialContact" id="cIInitialContact" class="emails"></form:input></td>
            <td align="right"><label for="sponsorEmail">Sponsor Email</label></td><td align="left"><form:input type="text" path="sponsorEmail" id="sponsorEmail" class="emails"></form:input></td>

        </tr>


        <tr>
            <td align="right"><label for="requestedDeliveryDate">Requested Delivery Date</label></td><td align="left"><form:input type="text" path="requestedDeliveryDate" id="requestedDeliveryDate" class="datepicker"></form:input></td>
            <td align="right"><label>Classification</label></td><td align="left">

                <label for="discretionary" class="radio">Discretionary</label>
                <form:radiobutton path="stateDescription" id="discretionary" value="Discretionary"></form:radiobutton>
                <label for="mandatory" class="radio">Mandatory</label>
                <form:radiobutton path="stateDescription" id="mandatory" value="Mandatory"></form:radiobutton>
                <label for="regulatory" class="radio">Regulatory</label>
                <form:radiobutton path="stateDescription" id="regulatory" value="Regulatory"></form:radiobutton>
            </td>
        </tr>

        <tr>
            <td colspan="4" align="right"><input type="submit" class="ui ui-button ui-corner-all ui-widget" style="margin-top: .6em; margin-right: 1em;font-weight: bold;font-size: 1.2em; width: 150px;" value="Create Idea" /></td>
        </tr>
    </table>
</form:form>

我试着把commandName=的“想法”改为modelAttribute=的想法,但没有任何好处。

Spring控制器看起来就像

代码语言:javascript
复制
@Controller
@RequestMapping ("/createIdeaPublic")
public class CreateIdeaPublicController{


   @RequestMapping(method = RequestMethod.GET)
   public ModelAndView view(ModelMap model) {
      model.addAttribute("areas",Utils.areas);
      return new ModelAndView("createIdeaPublic", "idea", new Idea());
   }


   @RequestMapping(method = RequestMethod.POST)
   public String submit(@ModelAttribute("idea")Idea idea, ModelMap model) {

//     System.out.println(idea.getTitle());
       System.out.println("Hello World");
      return "redirect:createIdeaPublic";
   }

} 

但是,一旦我从submit方法中删除了@ModelAttribute("idea") idea,,表单提交就开始工作了。

EN

回答 1

Stack Overflow用户

发布于 2016-11-06 19:57:20

我想通了。这是日期字段的问题。如果我没有在日期字段中输入一个值,我将得到400页。下面是我在Controller类中所做的工作。如果您有此问题,请按原样复制(只需相应更改日期格式)。

代码语言:javascript
复制
@InitBinder
    public void initBinder(WebDataBinder binder) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
        dateFormat.setLenient(false);

        // true passed to CustomDateEditor constructor means convert empty String to null
        binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40446126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档