Невозможно преобразовать значение типа 'java .lang.String' в требуемый тип 'java .time.LocalDate' - PullRequest
0 голосов
/ 21 марта 2020

Для запуска приложения я использую пакет Tomcat 8.5.50 на войне. я использую версию весны 5.2. во всех операциях я использую JpaRepository. Я не использую преобразователи даты и времени в своем коде - может быть, это ошибка? Я хочу добавить дату в свою таблицу, используя jsp:

<div id="row">
        <%--@elvariable id="mealsCreate" type=""--%>
        <form:form action="${pageContext.request.contextPath}/create"
                   modelAttribute="mealsCreate" method="post">
            <div class="col-md-9">
                <input type="hidden"/>

                <div class="form-group">
                    <div class="col-md-12">
                        <label for="dateTime">DateTime</label>
                        <input id="dateTime" type="date" name="datetime"/>
                    </div>
                </div>

                <div class="form-group">
                    <div class="col-md-12">
                        <label for="description" type="table" class="table">Description</label>
                        <input id="description" type="text" name="description"/>
                    </div>
                </div>

                <div class="form-group">
                    <div class="col-md-12">
                        <label for="calories" type="table" class="table">Calories</label>
                        <input id="calories" type="number" name="calories"/>
                    </div>
                </div>

                <button type="submit" class="btn btn-default" name="saveMeals">Save</button>
                <button type="button" class="btn btn-default" name="cancelMeals" onclick="window.history.back()">Cancel</button>

            </div>
        </form:form>
    </div>

, но получаю ошибку:

enter image description here

ошибка в журнале:

Ошибка поля в объекте 'foodsCreate' в поле 'datetime': отклоненное значение [2020-04-29]; коды [typeMismatch.mealsCreate.datetime, typeMismatch.datetime, typeMismatch. java .time.LocalDate, typeMismatch]; аргументы [org.springframework.context.support.DefaultMessageSourceResolvable: codes [foodsCreate.datetime, datetime]; аргументы []; сообщение по умолчанию [datetime]]; сообщение по умолчанию [Не удалось преобразовать значение свойства типа 'java .lang.String' в требуемый тип 'java .time.LocalDate' для свойства 'datetime'; вложенное исключение: java .lang.IllegalStateException: невозможно преобразовать значение типа 'java .lang.String' в требуемый тип 'java .time.LocalDate' для свойства 'datetime': не найдено подходящих редакторов или стратегии преобразования ]] 22: 16: 59.659 [localhost-startStop-2] INFO osojLocalContainerEntityManagerFactoryBean - Закрытие JPA EntityManagerFactory для единицы сохраняемости 'default'

моя модель:

@Entity
@Table(name="meals")
public class Meal {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private int id;

    @Column(name = "date_time")
    private LocalDate datetime;

    @Column(name = "description")
    private String description;

    @Column(name = "calories")
    private int calories;

    public Meal() {
    }

    public Meal(int id) {
        this.id = id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getId() {
        return id;
    }

    public LocalDate getDatetime() {
        return datetime;
    }

    public void setDatetime(LocalDate datetime) {
        this.datetime = datetime;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public int getCalories() {
        return calories;
    }

    public void setCalories(int calories) {
        this.calories = calories;
    }
}

ничего не загружено в базу данных тоже. мой sql запрос:

CREATE TABLE meals
(
  id integer NOT NULL,
  date_time date,
  description text NOT NULL,
  calories integer NOT NULL,
  CONSTRAINT meals_pkey PRIMARY KEY (id)
)

Контроллер:

@Controller
public class Controller {
    @Autowired
    MealService mealService;

    @GetMapping(value = "/list")
    public String getAll(Model model) {
        model.addAttribute("meals", mealService.getAll());

        return "meals";
    }

    @GetMapping(value = "/createForm")
    public String addForm(Model model) {
        Meal meal = new Meal();
        model.addAttribute("mealsCreate", meal);

        return "createmealForm";
    }

    @PostMapping(value = "/create")
    public String save(@ModelAttribute("mealsCreate") Meal meal) {
        mealService.save(meal);
        return "redirect:/list";
    }
}

что не так в моем коде?

...