Spring, принимающий String с веб-страницы и преобразующий в LocalDate - PullRequest
0 голосов
/ 25 августа 2018

Я получаю эту ошибку. Можете ли вы найти, что я делаю неправильно.

Не удалось преобразовать значение типа 'java.lang.String' в требуемый тип java.time.LocalDate 'вложенное исключение java.lang.IllegalStateException: невозможно преобразовать значение типа 'java.lang.String' для требуемого типа 'java.time.LocalDate': не соответствует Найдены редакторы или стратегия конверсии.

package com.pc.controller;

import java.time.LocalDate;
import java.util.Map;

import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class Controllera {

@RequestMapping(value="/home.htm",method=RequestMethod.GET)
public String showForm() {
    System.out.println("Controllera.showForm()");
    return "welcome";
}

@RequestMapping(value="/home.htm",method=RequestMethod.POST)    
public String process(Map<String ,Object>map,@RequestParam("date") 
                     @DateTimeFormat(pattern="dd-MM-yyyy") LocalDate date) {
    System.out.println("Controllera.process()");
    System.out.println(date);
    map.put("date",date);
    return "success";
}
}

//end of controller


My web page

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<form method="POST">
<input type="text" name="date" id="date"/><br>
<input type="submit"/>
</form >

1 Ответ

0 голосов
/ 26 августа 2018

В формате HTML по умолчанию используется формат ГГГГ-ММ-ГГ.

Для этого есть 2 решения:

1 - измените свой параметр следующим образом: @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate date

Также ваш метод контроллера должен быть:

@RequestMapping(value="/home.htm",method=RequestMethod.POST)    
public String process(Map<String ,Object> map, @RequestParam("date") 
                     @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate date) {

// omitted for brevity.

 }
}

2 - Или вы можете сделать это в JSP для этого вам нужно проверить this

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...