jQuery datepicker with Spring MVC - Passing date from view to controller sends null
Solution 1
It looks like your :
@Column(name = "DUE_DATE")
@DateTimeFormat(pattern = "yyyy/mm/dd")
private Date dueDate;
Is the problem. Spring is unable to convert it into Date.
Instead try
private String dueDate;
Solution 2
I resolved the issue by passing the date in RequestParam to controller:
public @ResponseBody Status lockDevice(@ModelAttribute("adminTransaction") @Validated AdminTransaction adminTransaction, BindingResult result, Model model, Locale locale,Map<String, Object> map, HttpServletRequest request, @RequestParam @DateTimeFormat(pattern="yyyy-MM-dd") Date dueDate) {
try {
/*.......CODE.........*/
SimpleDateFormat dt1 = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
Date date = dt1.parse(dt1.format(dueDate));
adminTransactionDO.setDueDate(date);
/*.......CODE.........*/
}
return new Status("success", "Transaction inserted Successfully !");
} catch (Exception e) {
return new Status("error", e.toString());
}
}
Full Stack Developer - Java
Updated on June 14, 2022Comments
-
Full Stack Developer - Java almost 2 years
After submitting the form , I see all the values being passed properly to the controller except date which is passed as null(The date selection in the form enters a proper date in the input field) I tried adding but it did not help. I also tried removing "path" and replacing it with "name" in the "" but it throws error saying "path" attribute is missing. I tried following but no luck-
1. In spring web mvc application date value is received as NULL in controller after reading from date-picker on jsp page
2. http://blog.teamextension.com/date-binding-in-spring-mvc-1321jQuery:
$(document).ready(function() { $("#datepicker").datepicker({dateFormat:"yy-mm-dd"}); });
JSP:
<div class="plLabelSearch" id="hiddenField">Due Date:</div> <div class="plinput"><form:input type="text" id="datepicker" path="dueDate" placeholder="yyyy-mm-dd"/></div>
Model:
@Column(name = "DUE_DATE") @DateTimeFormat(pattern = "yyyy/mm/dd") private Date dueDate;
Controller:
@RequestMapping(value="/lock", method = RequestMethod.POST) public @ResponseBody Status lockDevice(@ModelAttribute("adminTransaction") @Validated AdminTransaction adminTransaction, BindingResult result, Model model, Locale locale,Map<String, Object> map, HttpServletRequest request) { try { /*.......CODE.........*/ adminTransactionDO.setDueDate(adminTransaction.getDueDate()); /*.......CODE.........*/ } return new Status("success", "Transaction inserted Successfully !"); } catch (Exception e) { return new Status("error", e.toString()); } }