#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