Невозможно преобразовать дату в желаемый формат, используя пружину initbinder - PullRequest
0 голосов
/ 18 ноября 2018

Я не могу преобразовать формат даты, используя initbinder. Вот мой код JSP.

<!DOCTYPE html>
 <html>
  <head>
  </head>
           <form action="postdata" method="post">
           fname <input type="text" name="fname"/> </br> 
           lname <input type="text" name="lname"/> </br>
           Date <input type="text" name="myDate"/> </br>
           <input type="submit"/>
          </form>   
   </body>
   </html>

Моя модель Класс Employee.java

 package com.model;
 import java.util.Date;

 public class Employee
    {
      private String fname;
      private String lname; 
      private Date myDate;

     public String getFname() {
        return fname;
     }

    public void setFname(String fname) {
      this.fname = fname;
    }

    public String getLname() {
    return lname;
   }

  public void setLname(String lname) {
   this.lname = lname;
  }

  public Date getMyDate() {
    return myDate;
 }

public void setMyDate(Date myDate) {
  this.myDate = myDate;
}

 @Override
public String toString() {
  return "Employee [fname=" + fname + ", lname=" + lname + ", myDate=" + 
  myDate + "]";
  }

}

 My Controller is as below

package com.mkyong;

  import java.io.IOException;
  import java.util.Date;
  import java.text.DateFormat;
  import java.text.SimpleDateFormat;
  import java.util.Map;
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
  import org.springframework.beans.factory.annotation.Value;
  import org.springframework.beans.propertyeditors.CustomDateEditor;
  import org.springframework.stereotype.Controller;
  import org.springframework.validation.BindingResult;
  import org.springframework.web.bind.WebDataBinder;
 import org.springframework.web.bind.annotation.InitBinder;
 import org.springframework.web.bind.annotation.ModelAttribute;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.servlet.ModelAndView;
 import com.model.Employee;

 @Controller
 public class WelcomeController {

@InitBinder
public void dataBinding(WebDataBinder binder) {

    SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
    dateFormat.setLenient(false);
    binder.registerCustomEditor(Date.class, "myDate", new 
    CustomDateEditor(dateFormat, false));
  }


@RequestMapping(value="/postdata",method=RequestMethod.POST)
public ModelAndView welcome(HttpServletRequest request, HttpServletResponse 
 response,@ModelAttribute("employee") Employee employee,BindingResult 
  bresult)
{
    System.out.println("In Welcomeontroller");
    System.out.println(employee);

   return new ModelAndView("myajax");

}

}

Когда я проверил в режиме отладки, в методе dataBinding я получаю нулевые значения для модели Employee. В приветственном методе я получаю формат даты как Пн Ян 01 00:00:00 IST 1990. Я хочу это в формате дд / мм / гггг. Пожалуйста, помогите мне, мне нужно применить то же самое в проекте для JQGrid.

1 Ответ

0 голосов
/ 19 ноября 2018

Измените

binder.registerCustomEditor(Date.class, "myDate", new CustomDateEditor(dateFormat, false));

на

binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));

Если вы хотите использовать более простой подход, чем приведенный выше, попробуйте добавить поле даты, как показано ниже.

@DateTimeFormat(pattern = "dd/MM/yyyy")
@ModelAttribute
@Temporal(TemporalType.DATE)
@Column(name = "date")
private Date date;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...