【问题标题】:java.util.Date from <input type="datetime-local" />java.util.Date 来自 <input type="datetime-local" />
【发布时间】:2012-09-16 08:22:09
【问题描述】:

我正在使用带有 Spring 的 JSTL,并且我已经获得了代码:

<form:input type="datetime-local" path="startDate" />

其中 startDate 是 java.util.Date

如何从输入中获取日期和时间?有没有正确的方法或者我应该从输入中获取字符串并编写代码将其转换为 java.util.Date?

提前致谢。

这是我的 nuevaTarea.jsp:

<%@ include file="/WEB-INF/jsp/include.jsp" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Nueva tarea</title>
    <link rel="stylesheet" type="text/css" href="resources/css/style.css" media="screen" />
</head>
<body>
    <h1>Nueva tarea</h1>       
    <form:form action="nuevatarea.htm" method="POST" commandName="tareaForm"> 
        <label>Fecha de inicio:</label><form:input type="datetime-local" path="fechaInicio" /><br />
        <label>Fecha de fin:</label><form:input type="datetime-local" path="fechaFin" /><br />

        <input type="submit" value="Crear tarea" />
    </form:form>
</body>
</html>

这是我的 TareaForm.java,它是命令类:

打包web.controller;

导入 java.util.Date;

公共类 TareaForm {

private Date fechaInicio;
private Date fechaFin;

public Date getFechaFin() {
    return fechaFin;
}

public Date getFechaInicio() {
    return fechaInicio;
}

public void setFechaFin(Date fechaFin) {
    this.fechaFin = fechaFin;
}

public void setFechaInicio(Date fechaInicio) {
    this.fechaInicio = fechaInicio;
}

}

而且,这是我的控制器 nuevaTareaController.java:

打包web.controller;

import javax.servlet.http.HttpServletRequest;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;

public class nuevaTareaController extends SimpleFormController {

public nuevaTareaController() {
    setCommandClass(TareaForm.class);
    setCommandName("tareaForm");
}

    @Override
    protected Object formBackingObject(HttpServletRequest request) throws Exception {
    return (TareaForm)super.formBackingObject(request);
}   

   @Override
   protected ModelAndView onSubmit(Object command, BindException bindException)
    throws Exception {

    // Do something with (TareaForm)command
    return new ModelAndView(getSuccessView());
  }

}

这是我的 dispatcher-servlet 中控制器的配置:

<bean class="web.controller.nuevaTareaController">
    <property name="formView" value="nuevaTarea" />
    <property name="successView" value="tareaCreada" />
    <property name="gestorTareas" ref="tareas" />
</bean>

【问题讨论】:

  • Spring表单没有属性类型,默认为type=text

标签: java html spring date jstl


【解决方案1】:

我会使用 PropertyEditor 从字符串转换为日期。 Spring 为您准备了already taken care of this。最终结果应该是 java.util.Date。

【讨论】:

  • 嗨!谢谢回答。我已经编辑了我的问题,因为我不完全理解你的答案。如您所见,我没有使用注释、PropertyEditor 或任何验证器。您是在向我建议将 HTML5 日期字符串格式转换为日期的注释吗? HTML5 日期字符串的示例是来自 w3.org/TR/html-markup/input.datetime-local.html 的 1985-04-12T23:20:50.52
  • 仅供参考:HTML 5 datetime-local 格式缺少秒,所以 yyyy-MM-ddThh:mm 所以字符串不是 ISO yyyy-MM-ddThh:mm:ssZ 格式 Spring / Jackson开箱即用的处理方式如下:@DateTimeFormat(pattern="yyyy-MM-dd'T'HH:mm")
猜你喜欢
  • 2022-01-16
  • 2022-12-14
  • 2015-07-14
  • 1970-01-01
  • 1970-01-01
  • 2023-02-16
  • 2019-03-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多