form
отправить отправку date
с паттеном yyyy-MM-dd
для поддержки при отправке. но есть ли способ отправить дату в dd-MM-yyyy
. Я использую html5
это работает правильно, если изменить type="text"
, чем type="date"
Я пытаюсь отправить дату dd-MM-yyyy
, интерфейс выглядит как показано ниже.
При отправке, поскольку значение, отправляемое на сервер, равно yyyy-MM-dd
и из-за чего возникает следующая ошибка. Что-то не так с моим кодом?
2018-11-16 18: 12: 20.553 WARN 8925 --- [nio-8080-exec-2]
.w.s.m.s.DefaultHandlerExceptionResolver: не удалось связать запрос
элемент:
org.springframework.web.method.annotation.MethodArgumentTypeMismatchException:
Не удалось преобразовать значение типа 'java.lang.String' в требуемый тип
'Java.time.LocalDate'; вложенное исключение
org.springframework.core.convert.ConversionFailedException: не удалось
преобразовать из типа [java.lang.String] в тип
[@ Org.springframework.web.bind.annotation.RequestParam
@ org.springframework.format.annotation.DateTimeFormat
java.time.LocalDate] для значения '2018-11-09'; вложенное исключение
java.lang.IllegalArgumentException: попытка разбора для значения
[2018-11-09]
Ниже приведен код:
JSP:
<!DOCTYPE html>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html lang="en">
<head>
<link rel="stylesheet" type="text/css"
href="webjars/bootstrap/3.3.7/css/bootstrap.min.css" />
<!--
<spring:url value="/css/main.css" var="springCss" />
<link href="${springCss}" rel="stylesheet" />
-->
<c:url value="/css/main.css" var="jstlCss" />
<link href="${jstlCss}" rel="stylesheet" />
</head>
<body>
<nav class="navbar navbar-inverse">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="#">Spring Boot</a>
</div>
<div id="navbar" class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#about">About</a></li>
</ul>
</div>
</div>
</nav>
<div class="container">
<div class="starter-template">
<h1>Spring Boot Web JSP Example</h1>
<h2>Message: ${message}</h2>
<form action="/get" method="post">
<input type="date" name="date" pattern="\d{1,2}/\d{1,2}/\d{4}"><!-- -->
<input type="submit" value="submit">
</form>
</div>
</div>
<!-- /.container -->
<script type="text/javascript"
src="webjars/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</body>
</html>
Класс контроллера:
@Controller
public class MyController {
// inject via application.properties
@Value("${welcome.message:test}")
private String message = "Hello World";
@RequestMapping("/")
public String welcome(Map<String, Object> model) {
model.put("message", this.message);
return "welcome";
}
@RequestMapping(value="/get",method={RequestMethod.GET,RequestMethod.POST})
public String get(Map<String, Object> model, @RequestParam(value="date") @DateTimeFormat(pattern ="dd-MM-yyyy") LocalDate date) {
System.out.println("get" + date.format(DateTimeFormatter.ofPattern("dd-MM-yyyy")));
return "welcome";
}
//this is for testing
@RequestMapping(value="/get1",method={RequestMethod.GET,RequestMethod.POST})
public String get1(Map<String, Object> model, @RequestParam(value="date") String date) {
System.out.println("get1 "+ date);
return "welcome";
}
}