[SPRING] java.lang.String 유형의 등록 정보 값을 필수 유형 java.util.Date로 변환하는 데 실패했습니다.
SPRINGjava.lang.String 유형의 등록 정보 값을 필수 유형 java.util.Date로 변환하는 데 실패했습니다.
양식에 날짜를 입력하려고하면이 오류가 발생합니다.
TaskController
@RequestMapping(value = "/docreatetask", method = RequestMethod.POST)
public String doCreateTask(Model model, @Valid Task task,
BindingResult result, Principal principal,
@RequestParam(value = "delete", required = false) String delete) {
System.out.println(">TaskController doCreateTask " + task);
if (result.hasErrors()) {
System.out.println("/docreatetask in here");
model.addAttribute("task", task);
System.out.println("+++++"+task.getDeadline());// deadline is null
return "createtask";
}
...
Create.jsp
...
<form:form method="POST"
action="${pageContext.request.contextPath}/docreatetask"
commandName="task">
<table class="formtable">
<tr>
<td class="label">Task</td>
<td><form:input cssClass="control" path="taskname"
name="taskname" type="text" /><br />
<form:errors path="taskname" cssClass="error" /></td>
</tr>
<tr>
<td class="label">Description</td>
<td><form:textarea cssClass="control" path="description"
name="description"></form:textarea><br />
<form:errors path="description" cssClass="error" /></td>
</tr>
<tr>
<td class="label">Deadline (dd/mm/yyyy)</td>
<td><form:input cssClass="control" path="deadline"
name="deadline" type="date" /><br />
<form:errors path="deadline" cssClass="error"></form:errors></td>
</tr>
...
컨트롤러에서 나는 같은 에러 (그리고 "yyyy / MM / dd"와 같은 다른 포맷들)로 다음과 같이 썼다.
@InitBinder
public void initBinder(WebDataBinder webDataBinder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
dateFormat.setLenient(false);
webDataBinder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}
클래스 (다른 형식으로도 가능)에서 주석을 추가하려고했지만 동일한 오류가 발생했습니다.
...
@Column(name = "deadline")
@DateTimeFormat(pattern = "dd/MM/yyyy")
private Date deadline;
...
해결법
-
==============================
1.이것을 컨트롤러에 추가하십시오. 날짜 형식을 로케일 기본 설정으로 변경하십시오.
이것을 컨트롤러에 추가하십시오. 날짜 형식을 로케일 기본 설정으로 변경하십시오.
@InitBinder public void initBinder(WebDataBinder binder){ binder.registerCustomEditor( Date.class, new CustomDateEditor(new SimpleDateFormat("dd/MM/yyyy"), true, 10)); }
모델에서이 주석을 사용하는 것을 고려하십시오 (환경 설정에 대한 형식 및 시간 형식 적용)
@DateTimeFormat(pattern = "dd/MM/yyyy") @Temporal(TemporalType.DATE)
-
==============================
2.@DateTimeFormat (pattern = "yyyy-MM-dd")에 (-)를 추가하면됩니다.
@DateTimeFormat (pattern = "yyyy-MM-dd")에 (-)를 추가하면됩니다.
예:
@DateTimeFormat(pattern = "yyyy-MM-dd") private Date dateNaissance;
-
==============================
3.당신은 initBinder에 대한 BaseController에서 변경해야합니다.
당신은 initBinder에 대한 BaseController에서 변경해야합니다.
@InitBinder protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) { SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); dateFormat.setLenient(false); binder.registerCustomEditor(Date.class, null, new CustomDateEditor(dateFormat, true)); }
from https://stackoverflow.com/questions/23702041/failed-to-convert-property-value-of-type-java-lang-string-to-required-type-java by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] org.springframework.context.ConfigurableApplicationContext 형을 해결할 수 없다. 필수 .class 파일에서 간접적으로 참조됩니다. (0) | 2019.03.27 |
---|---|
[SPRING] Spring @Conditional 구성 주석의 평가를 지연시키는 방법은 무엇입니까? (0) | 2019.03.27 |
[SPRING] 맵에서 스프링 바인딩 값 (0) | 2019.03.27 |
[SPRING] intercept-url 패턴 / ** 404 오류 발생 (0) | 2019.03.26 |
[SPRING] 스프링 통합 - 인바운드 대 아웃 바운드 채널 어댑터 (0) | 2019.03.26 |