当前位置: 首页 > 知识库问答 >
问题:

Spring从网页获取字符串输入并转换为LocalDate转换错误

龚钧
2023-03-14

我得到这个错误,你能找到我做错了什么。

无法转换“java”类型的值。lang.String“”转换为所需的java类型。时间LocalDate的嵌套异常为java。lang.IllegalStateException:无法转换“java”类型的值。lang.String“to required type”java。时间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个答案

闻人宏盛
2023-03-14

在Html中的默认日期格式是YYYY-MM-YY。

您有两种解决方案:

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中执行此操作,您需要对此进行检查

 类似资料:
  • 我想将转换为,但由于某种原因无法转换。

  • 我的DTO具有字符串格式的日期字段。我的实体有日期为LocalDate。目前,我从map跳过它,然后手动显式设置它(字符串到日期,反之亦然)。 可以自动转换吗?我尝试在Springbean中使用Converter,但它给了我很多编译错误(类型转换器不接受参数,不重写convert方法-convert()也有很多错误)。 我对modelmapper不是很熟悉。非常感谢您的帮助。 正如我建议的那样,我

  • 我使用Spring靴和Spring4。 我尝试使用Java 8 LocalDate。 在json中输入日期 出生日期:“1969-12-29” 在服务器端这个领域我有 我得到这个错误 组织。springframework。http。转换器。HttpMessageNoteableException:无法读取文档:无法从字符串值('1969-12-29')实例化类型为[简单类型,类java.time.

  • 问题内容: 在SQL 9(2005)中创建了一个存储过程,此后已升级到SQL 10(2008)。从那时起,以下存储过程停止工作并引发上述错误: 传入的参数@vPortalUID包含:2A66057D-F4E5-4E2B-B2F1-38C51A96D385。我执行这样的存储过程: 它跌倒了。我也尝试过转换。仍然没有喜悦。也具有将{}括起来的价值。我如上所述以编程方式和手动方式删除了这些内容。 如果您

  • 我遇到了这样一个java字符串,其中以下内容是错误的: 我想这是因为字符串构造函数默认将主体字节[]的编码视为UTF-8,我不是100%确定。我如何能够将此字符串存储在字节[]中,并能够稍后将其转换回来?我想我需要能够确定字节[]的编码方式。我该怎么做呢? 一些上下文:我需要字节[],以便压缩数据,将其存储在数据库中,然后解压缩并将未压缩的字节[]转换回原始字符串。这个字符串最初来自某个下载了网页

  • 问题内容: 我有以下代码,我试图通过测试,但似乎无法理解Java世界中各种编码形式。 我想我的问题是:将任意字节的字节数组转换为Java字符串,然后将同一Java String转换为另一个字节数组的正确方法是什么,该字节数组将具有与原始字节相同的长度和相同的内容数组? 问题答案: 尝试特定的编码: ideone链接