当前位置: 首页 > 知识库问答 >
问题:

带有日期的Spring MVC输入标记抛出错误:HTTP状态400-客户端发送的请求语法不正确

欧浩淼
2023-03-14
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>    
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Spring Form Example</title>
</head>
<body>
    <h2>Form Example</h2>
    <form:form commandName="formExample" action="formExampleDetails" method="post">
        <table>
            <tr>
                <td>
                    <label>BirthDate:</label>
                </td>
                <td>
                    <fmt:formatDate value="${birthDate.date}" pattern="dd-mmm-yyyy" var="birthDate"/>
                    <form:input path="birthDate" value="${birthDate}"/>
                </td>
            </tr>
            <tr>
                <td>
                    <input type="submit" value="Submit"/>
                </td>
                <td>
                    <input type="reset" value="Reset">
                </td>
            </tr>
        </table>
    </form:form>
</body>
</html>

控制器类(即ApplicationControllerClass)如下所示

@Controller
public class ApplicationController {
    @RequestMapping("/formExample")
    public String formExamplePage(ModelMap model){
        model.put("formExample", new FormExample());
        return "formExamplePage";
    }

    @RequestMapping(value="/formExampleDetails",method=RequestMethod.POST)
    public String formExampleDetails(@ModelAttribute FormExample formExample,ModelMap model){
        System.out.println("BirthDate====>"+formExample.getBirthDate());
        return "index";
    }

    @InitBinder
    public void initBinder(WebDataBinder binder){
        SimpleDateFormat sdf = new SimpleDateFormat("dd-mmm-yyyy");
        sdf.setLenient(true);
        binder.registerCustomEditor(Date.class, new CustomDateEditor(sdf, true));
    }

}

Pojo类(即FormExample.java)如下所示

package com.spring.pojo;

import java.io.Serializable;
import java.sql.Date;

public class FormExample implements Serializable{
    private static final long serialVersionUID = 5527691555730303451L;

    private Date birthDate;

    public Date getBirthDate() {
        return birthDate;
    }
    public void setBirthDate(Date birthDate) {
        this.birthDate = birthDate;
    }
}

共有1个答案

方茂
2023-03-14

我相信你现在可以解决这个问题了。但为了其他民族的利益,我会补充我解决这个问题的方式。因为我得花几个小时来解决这个问题。

您可以更新FormExample birthDate字段,如下所示。

          @DateTimeFormat(pattern = "dd-mmm-yyyy")
          private Date birthDate;

这将正确地将表单对象映射到您的pojo对象,并且不会产生400 BAD Request错误。

 类似资料:
  • 我在这个问题上花了很多时间,但无法解决它。请帮忙!当我从JSP提交表单时,我得到了这个错误。我的代码: 和我的控制器代码: }

  • 当我在jsp表单上添加日期字段时,我会得到这个错误,但没有它,它可以正常工作。 请求 部分Form.jsp 部分Task.java组件 部分任务控制器 知道这会是什么吗? 提前道谢! 关于错误的新的额外信息我添加了一些验证注释,并获得了关于错误的新信息。 对象“task”中字段“date”出现字段错误:拒绝值[01/01/2001];代码[typeMismatch.task.date,typeMi

  • 这里是LocationSearchMetaData.java 我的控制器 我的客户要求是这样的 下面是实际数据请求 获取时出错I:

  • 这是我的控制器 我的豆子是 当我给出的名称介于5到45个字符之间时,表单将被验证。但当表单未被验证时,我会收到400状态错误报告。我不知道为什么我会出错。这里需要帮助吗

  • 我有一个表单,用户可以使用它将文件上传到本地驱动器,还可以将一些数据保存到数据库中。但是出现了这个错误消息,我想知道如何处理它。 控制器 形式本身 我试图先保存表单,我将使用单独的方法发送它。

  • 我已经创建了一个MVC结构来为患者保存一个新的记录,我不断收到404错误。这是我的密码, 病人JAVA 控制器类 Dao实现类 调度servlet 耐心形成。jsp web.xml 我可以获取列表,但当我尝试从PatientForm保存患者详细信息时。jsp时,表单未将其提交给控制器,并给出400状态错误