[SPRING] Spring HTTP Status 400 - 클라이언트가 보낸 요청은 구문 상 올바르지 않습니다 (날짜 입력을 추가 할 때)
SPRINGSpring HTTP Status 400 - 클라이언트가 보낸 요청은 구문 상 올바르지 않습니다 (날짜 입력을 추가 할 때)
jsp 폼에 날짜 필드를 추가 할 때이 오류가 발생하지만,이 오류없이 정상적으로 작동합니다.
의뢰
http://localhost:8080/myTasks/docreatetask?task=hi+there&description=stucked+here&date=2014-02-21&idTaskCategory=1&idTaskPriority=1&idTaskState=1&pending=1&idUser=0&idUser_responsible=0&evaluation=aaaaaa
부분 form.jsp
<form method="GET"
action="${pageContext.request.contextPath}/docreatetask">
<table>
<tr>
<td>Task</td>
<td><input name="task" type="text" /></td>
</tr>
<tr>
<td>Description</td>
<td><textarea name="description"></textarea></td>
</tr>
<tr>
<td>Date</td>
<td><input name="date" type="date"/></td>
</tr>
부분적으로 Task.java 구성 요소
@Component("task")
public class Task {
private long id;
private String task;
private String description;
private Date date;
private Date deadline;
private Category category;
private Priority priority;
private State state;
private User user;
private User userResponsible;
private String evaluation;
private Date timestamp;
private int pending;
부분적으로 작업 컨트롤러
@RequestMapping("/createtask")
public String createTask(Model model) {
List<Category> categories = taskService.getCategories();
List<Priority> priorities = taskService.getPriorities();
List<State> states = taskService.getStates();
List<User> users = taskService.getUsers();
model.addAttribute("categories",categories);
model.addAttribute("priorities",priorities);
model.addAttribute("states",states);
model.addAttribute("users",users);
return "createtask";
}
@RequestMapping(value="/docreatetask", method=RequestMethod.GET)
public String doCreateTask(Model model, Task task) {
System.out.println(">TaskController doCreateTask " + task);
return "taskcreated";
}
어떤 아이디어 일 수 있니?
미리 감사드립니다.
오류에 대한 새로운 추가 정보 일부 유효성 검사 주석을 추가하고 오류에 대한 새로운 정보를 얻었습니다.
해결법
-
==============================
1.두 가지 문제가 있습니다.
두 가지 문제가 있습니다.
한 가지 문제는 http 메서드를 사용하는 것일 수 있다고 생각합니다. GET 요청은 URL 쿼리 문자열 (? 뒤에 오는 항목)을 사용하여 매개 변수를 보냅니다. 그러나 URL의 전체 길이는 브라우저, chaches, 웹 서버에 의해 기술적으로 제한됩니다. 따라서 문제의 원인 중 하나는 매개 변수가 많거나 "긴"값 (예 : 긴 설명)이있는 경우 URL이 길어질 수 있습니다. (이것이 맞지만 원인은 아닙니다)
그래서 대신 http 메서드 POST를 사용하는 것이 좋습니다. 그리고 POST를 사용하면 서버에서 뭔가를 변경하는 요청에 대한보다 나은 동사가됩니다 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html).
-
==============================
2.오랫동안 나는 또한이 문제에 직면했다.
오랫동안 나는 또한이 문제에 직면했다.
나는 그것을 사용하여 해결 :
@InitBinder protected void initBinder(WebDataBinder binder) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); binder.registerCustomEditor(Date.class, new CustomDateEditor( dateFormat, false)); }
from https://stackoverflow.com/questions/21929232/spring-http-status-400-the-request-sent-by-the-client-was-syntactically-incorr by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring JPA 스펙을 이용한 다중 컬럼 검색 (0) | 2019.04.15 |
---|---|
[SPRING] 봄과 HTTP 옵션 요청 (0) | 2019.04.15 |
[SPRING] Spring bean에서 간단한 클래스 이름을 사용하려면 어떻게해야합니까? (0) | 2019.04.15 |
[SPRING] sftp 용 스프링 통합 (0) | 2019.04.15 |
[SPRING] PostgreSQL + Hibernate + Spring 자동 생성 데이터베이스 (0) | 2019.04.15 |