Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Thymeleaf和sql.Date_Date_Spring Mvc_Time_Thymeleaf - Fatal编程技术网

Thymeleaf和sql.Date

Thymeleaf和sql.Date,date,spring-mvc,time,thymeleaf,Date,Spring Mvc,Time,Thymeleaf,我的实体中有sql.Date和sql.Time字段,希望使用文本输入编辑它们的值。 实体中的声明 @DateTimeFormat (pattern="HH:mm") private Time time; @DateTimeFormat (pattern="yyyy-MM-dd") private Date date; 模板 <input id="date" name="date" type="text" th:value="*{{date}}" required="required"

我的实体中有sql.Date和sql.Time字段,希望使用文本输入编辑它们的值。
实体中的声明

@DateTimeFormat (pattern="HH:mm")
private Time time;

@DateTimeFormat (pattern="yyyy-MM-dd")
private Date date;
模板

<input id="date" name="date" type="text" th:value="*{{date}}" required="required" />
<input id="time" name="time" type="text" th:value="*{{time}}" />

import java.sql.Date;

import org.springframework.format.annotation.DateTimeFormat;

public class FormHDetails {

    @DateTimeFormat (pattern="yyyy-MM-dd")
    private Date date;
}
<form action="#" th:action="@{/formh/test}" method="post" th:object="${detailsItem}">
    <div>
        <label for="date">Date</label>
        <input id="date" name="date" type="text" th:field="*{date}" required="required" />
    </div>
    <button type="submit" name="save">Save</button>
</form>

import java.sql.Date;

import org.springframework.format.annotation.DateTimeFormat;

public class FormHDetails {

    @DateTimeFormat (pattern="yyyy-MM-dd")
    private Date date;
}
<form action="#" th:action="@{/formh/test}" method="post" th:object="${detailsItem}">
    <div>
        <label for="date">Date</label>
        <input id="date" name="date" type="text" th:field="*{date}" required="required" />
    </div>
    <button type="submit" name="save">Save</button>
</form>

日期
拯救
很少有事情。。。 基本上,您的控制器没有将对象正确地传递给控制器,并且它没有接收到他所期望的…:

// GET Method 
@RequestMapping(value={"/test"}, method = RequestMethod.GET)
public String getFormH(Model model){
FormHDetails detailsItem = new FormHDetails(); // or whatever constructor you use...

detailsItem.setDate(new DateTime().toDate); // import and use Joda Time is simpler...
    model.addAttribute("itemAttribute", detailsItem);

    return "/formh/test";
}
接下来,您需要在控制器中定义POST方法。您可以通过将请求映射中的方法更改为POST来完成此操作,并且您需要告诉控制器,您希望表单以对象表单的形式提供详细信息:

@RequestMapping(value={"/test"}, method = RequestMethod.POST)
public postFormH(@ModelAttribute("itemAttribute") FormHDetails detailsItem, final BindingResult bindingResult) {
// check if the form is properly sent?    
if(bindingResult.hasErrors(){
   return "formh/test";
}
// If everything went fine, print the date and redirect me
System.out.println(detailsItem.date);
return "redirect:/formh";
}
好的,现在你们应该有合适的工作控制器来处理GET和POST请求

现在,在您的视图中,只需更改th:object以处理控制器正在发送的内容:

th:object="${itemAttribute}"

这应该能用…

你试过用th:field代替th:value吗?@Blejzer,是的,还是空了更多信息。您能提供类、控制器和视图吗?@Blejzer即使我使用的输入类型“date”为我提供了一个日期选择器,我仍然看到空值value@Blejzer添加了更多源代码我不知道你在这里是什么意思“你的控制器没有正确地将对象传递给控制器”哇,我在这里把自己搞得一团糟。。。很抱歉误导您,错误显然在其他地方!请不要理会我的帖子。能否在@ModelAttribute前面添加@Valid,并提供使用
System.out.println(bindingResult.toString())得到的任何错误?它应该会提供一些有用的信息。我已经解决了这个问题,今天晚些时候会发布答案。控制器很好,但你给了我使用乔达时间的想法,所以我对你的答案投了赞成票。