我正在尝试使用Spring MVC、Java和MySql在我的网络应用程序中实现完整的日历插件。当我尝试在我的jsp中使用“输入类型=日期”添加日期时,我一直收到这个错误:
Field error in object 'event' on field 'endDate': rejected value [2018-03-13];
codes [typeMismatch.event.endDate,typeMismatch.endDate,typeMismatch.java.util.Date,typeMismatch];
arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [event.endDate,endDate]; arguments [];
default message [endDate]]; default message [Failed to convert property value of type 'java.lang.String'
to required type 'java.util.Date' for property 'endDate'; nested exception is org.springframework.core.convert.ConversionFailedException:
Failed to convert from type java.lang.String to type @org.springframework.format.annotation.DateTimeFormat
java.util.Date for value '2018-03-13';
nested exception is java.lang.IllegalArgumentException: Unable to parse '2018-03-13']
在我的控制器类中,我使用SimpleDateFormat格式化日期:
@RequestMapping(value = "add", method = RequestMethod.POST)
public String add(@ModelAttribute("event") Event event,
HttpServletRequest request,ServletRequestDataBinder binder,
ModelMap modelMap){
try{
SimpleDateFormat simpleDateFormat = new SimpleDateFormat ("dd/MM/yyyy");
event.setStartDate(simpleDateFormat.parse(request.getParameter("startDate")));
event.setEndDate(simpleDateFormat.parse(request.getParameter("endDate")));
eventService.create(event);
return "redirect:../event.html";
}catch (Exception e){
modelMap.put("event", event);
return "event/index";
}
}
最后在我的Jsp中:
<fieldset>
<legend>Event Information</legend>
<s:form method ="post" commandName = "event"
action="${pageContext.request.contextPath }/event/add.html">
<table>
<tr>
<td>Name</td>
<td><s:input path = "name"/></td>
</tr>
<tr>
<td valign = "top">Description</td>
<td><s:textarea path = "description" cols = "20" rows = "5" /></td>
</tr>
<tr>
<td>Start Date</td>
<td><input type = "date" name = "startDate" /></td>
</tr>
<tr>
<td>End Date</td>
<td><input type = "date" name = "endDate" /></td>
</tr>
<tr>
<td> </td>
<td><input type = "submit" value = "Save" /></td>
</tr>
</table>
</s:form>
</fieldset>
这是DAO实现:
@Repository("eventDAO")
public class EventDAOImpl implements EventDAO{
@Autowired
private SessionFactory sessionFactory;
@SuppressWarnings("unchecked")
@Override
public List<EventEntity> findAll() {
List <EventEntity> list = null;
Session session = null;
Transaction transaction = null;
try{
session = sessionFactory.openSession();
transaction = session .beginTransaction();
list = session.createQuery("select e.id as id, "
+ "e.name as title, "
+ "DATE_FORMAT(e.startDate, '%Y-%m-%d') as start, "
+ "DATE_FORMAT(e.endDate, '%Y-%m-%d') as end "
+ "from Event e")
.setResultTransformer(
Transformers.aliasToBean(EventEntity.class))
.list();
transaction.commit();
}catch(Exception e){
list = null;
if(transaction != null){
transaction.rollback();
}
}finally{
session.close();
}
return list;
}
在我的实体类中,我将变量保存为日期
private Date endDate;
我认为问题在于日期的解析,但我不确定!对此问题的任何解释都将不胜感激。
请求。getParameter(“endDate”)
返回字符串“2018-03-13”
。您需要在SimpleDataFormat
simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
event.setEndDate(simpleDateFormat.parse(request.getParameter("endDate")));
@ModelAttribute(“event”)事件事件将使Spring尝试将请求值
2018-03-13
绑定到事件
类型内的私有日期结束日期
字段。您的转换代码将不会被调用,因为错误发生在调用add
方法之前。
您需要使用此处描述的
属性编辑器
或转换器
定义全局转换逻辑,或者使用org.springframework.format.annotation.DateTimeFormat
指定每个日期字段的格式:
@DateTimeFormat(pattern = "yyyy-MM-dd")
// or use @DateTimeFormat(pattern = DateTimeFormat.ISO.DATE)
private Date endDate;
任务控制器 创造jsp 在控制器中,我用相同的错误(以及不同的格式,如“yyyy/MM/dd”)编写了以下内容 我还尝试在类中添加注释(以及使用不同的格式),但出现了相同的错误
我有两个微服务是通过外国沟通。一个微服务公开另一个正在调用的方法。该方法将日期作为参数。 这是方法的代码: == 另一个微服务使用这个外来类来调用这个方法: == 我的代码正在启动此异常: 未能转换“java”类型的值。lang.String“to required type”java。util。日期';嵌套异常为org。springframework。果心转换ConversionFailedEx
我想用spring boot api访问数据库中的一个函数,并获取它返回的值。当我们在swagger中输入参数时,日期部分会出现错误。 2021 4月1日,我在oracle中调用函数的日期参数时,没有错误,但我无法从spring开始以这种方式发送。 Oracle功能代码: ooeController: 其他服务: oeedao: 昂首阔步: 错误: 如何解决这个问题?
我将客户数据对象存储为共享首选项(Android)中的JSON字符串,并尝试检索转换回客户对象的字符串并用于验证。从对象到JSON字符串的转换非常好,并且存储在首选项中(作为键值(字符串)对)。 当我尝试使用-我总是得到相同的错误值...类型java.lang.字符串不能转换为JSONObject。 我希望一双不同的眼睛能捕捉到我不能捕捉到的东西。带有数据的错误消息(屏蔽): Value 类型为j
在这里,我试图将数据发送到我的web服务器,并使用解析json并将数据插入mysql数据库。我得到一个错误,表示值stdClass为
我有一个使用这种方法的@RestController 我的请求在哪里 我的班级看起来像 首先,Swagger显示类似于body的参数 但我想看到每一个这样的参数 第二,当我尝试提出请求时,我得到了这个卷曲 http://localhost:8080/route?param1=0 相反 http://localhost:8080/route?param1=0 因此,response contain