Как сохранить созданную дату при нажатии кнопки отправки

#jsf

#jsf

Вопрос:

Как я могу получить созданную дату и сохранить ее в базе данных при нажатии кнопки command.

      <p:inputText id="diff" styleClass="daysNumber" value="#{dayDiffBean.diff}">
     <f:valueChangeListener value="#{vacatioBean.vacation.balanceDay}" />
     </p:inputText>
     <h:commandButton styleClass="sndbutton1" value="#{text['employee.send']}"
                action="#{vacationBean.addVac}" />
 

В Bean у меня есть

 private static final long serialVersionUID = 1L;
private Date vEndDate;
private Date vStartDate;
private Date createdDate;
    private String isNobody;
Requestrelax vacation;
Employee e;
    private short balanceDay;


@EJB
VacationLocal vacations;

@ManagedProperty(value="#{loginBean.userId}")

    Integer userId;

@EJB
EmployeesLocal employees;



@PostConstruct
public void init(){
    System.out.println("0");
    vacation=new Requestrelax();
    e=employees.getEmployee(userId);
    vacation.setEmployee(e);


}

public void addVac(){
    System.out.println("1");
    System.out.println("____________"  createdDate);
    vacation.setCreatedDate(createdDate);

    vacations.addEmployeeVacation(vacation);

}

    public Integer getUserId() {
    return userId;
}

public void setUserId(Integer userId) {
    this.userId = userId;
}

public Employee getE() {
    return e;
}

public void setE(Employee e) {
    this.e = e;
}

public Requestrelax getVacation() {
    return vacation;
}

public void setVacation(Requestrelax vacation) {
    this.vacation = vacation;
}

public Date getvEndDate() {
    return vEndDate;
}

public void setvEndDate(Date vEndDate) {
    this.vEndDate = vEndDate;
}

public Date getvStartDate() {
    return vStartDate;
}

public void setvStartDate(Date vStartDate) {
    this.vStartDate = vStartDate;
}

public short getBalanceDay() {
    return balanceDay;
}

public void setBalanceDay(short balanceDay) {
    this.balanceDay = balanceDay;
}

public Date getCreatedDate() {
    return createdDate;
}

public void setCreatedDate(Date createdDate) {
    this.createdDate = createdDate;
}



 }
 

Как я могу получить созданную дату с помощью резервного компонента, когда я пытаюсь распечатать ее на консоли, она показывает null
Какие-либо предложения?

Ответ №1:

В дополнение к ответу Джозефа Э., я бы также предложил использовать Joda Time из-за того, как Java Date API используется в предыдущих версиях Java.

К счастью, в Java 8 эта проблема была исправлена.

Ответ №2:

Ваш Date объект равен нулю, потому что он никогда не инициализируется. Вам нужно сделать:

 Date createdDate = new Date();
 

Это также то, что дает createdDate фактическое Date значение, которое создается в качестве его значения.


С небольшой точки зрения я бы предложил использовать a Calendar при работе с датами. Отчасти потому Date , что API в основном испорчен и устарел.

Calendar это Singleton объект, который можно использовать следующим образом:

 Calendar createdDate = Calendar.getInstance();
 

При создании этого объекта он будет использовать текущее Locale и TimeZone , если вы не укажете иное.

Надеюсь, это поможет!

Комментарии:

1. Спасибо за ответ! Мне понравилось так javaCalendar = Calendar.getInstance(); Текущая дата =Calendar.getInstance().getTime(); System.out.println(текущая дата); vacation.setCreatedDate(текущая дата);

2. Но когда я сохраняю ее в БД, она отображается со временем, как я могу просто показывать даты, такие как 23.12.14

3. Вы должны изучить DateFormats, также в зависимости от типа используемой вами базы данных, вам может потребоваться преобразовать ее в объект даты типа sql перед вашим jdbc