jQuery datepicker with Spring MVC - Passing date from view to controller sends null

12,484

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());  
          }
}
Share:
12,484
Full Stack Developer - Java
Author by

Full Stack Developer - Java

Updated on June 14, 2022

Comments

  • Full Stack Developer - Java
    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-1321

    jQuery: $(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());  
              }
    }