Получение нулевого значения для рассчитанных/добавленных дней текущей даты плюс введенное пользователем значение
Мы рассчитываем значение столбца на основе введенного пользователем значения, т.е. количества дней, введенного пользователем, плюс текущая дата.
private Date setdaysAttendanceApprovedWithAdditionalDays(int daysAttendanceApproved2) {
Date currentDate = new Date();
Calendar c = Calendar.getInstance();
c.setTime(currentDate);
c.add(Calendar.DATE, daysAttendanceApproved2);
Date currentDatePlusUserInput = c.getTime();
return currentDatePlusUserInput;
}
Желаемый результат
Если пользователь вводит значение 10, то 8 мая 2020 г. плюс 10 выходными данными будет 18 мая 2020 г. в наборе NewDate.
Проблема
setNewdate setdaysAttendanceApprovedWithAdditionalDays устанавливается равным нулю
<h:form>
<p:panel id="panel" header="New User">
<h:panelGrid columns="3" cellpadding="5">
<p:outputLabel for="Additional Days" value="Additionaldays:" />
<p:inputText id="additionaldays" value="#{saveMB.attendanceApprovalEntity.daysAttendanceApproved}">
</p:inputText>
</h:panelGrid>
<p:commandButton value="Save" actionListener="#{saveMB.approveAttendance}" />
</p:panel>
</h:form>
saveMB.java
@ManagedBean(name = "saveMB")
@ViewScoped
public class saveMB implements Serializable {
private static final long serialVersionUID = 1L;
private static final Logger logger = LoggerFactory.getLogger(saveMB.class);
private Integer daysAttendanceApproved;
public Integer getdaysAttendanceApproved() {
return daysAttendanceApproved;
}
public void setdaysAttendanceApproved(Integer daysAttendanceApproved) {
this.daysAttendanceApproved = daysAttendanceApproved;
}
private Date newdate;
public Date getNewdate() {
return newdate;
}
public void setNewdate(Date newdate) {
this.newdate = newdate;
}
private AttendanceFlow attendanceApprovalEntity;
public AttendanceFlow getattendanceApprovalEntity() {
return attendanceApprovalEntity;
}
public void setattendanceApprovalEntity(AttendanceFlow attendanceApprovalEntity) {
this.attendanceApprovalEntity = attendanceApprovalEntity;
}
@PostConstruct
public void init() {
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
Map<String, String> params = externalContext.getRequestParameterMap();
}
private Date setdaysAttendanceApprovedWithAdditionalDays(int daysAttendanceApproved2) {
Date currentDate = new Date();
Calendar c = Calendar.getInstance();
c.setTime(currentDate);
c.add(Calendar.DATE, daysAttendanceApproved2);
Date currentDatePlusUserInput = c.getTime();
return currentDatePlusUserInput;
}
public void approveAttendance(AjaxBehaviorEvent event) {
FacesContext facesContext = FacesContext.getCurrentInstance();
try {
this.attendanceApprovalEntity.setNewdate(setdaysAttendanceApprovedWithAdditionalDays(this.attendanceApprovalEntity.getdaysAttendanceApproved()));
} catch (Exception e) {}
}
}
AttendanceFlow.java
@Entity
@Table(name = "ATTENDANCE_FLOW")
@NamedQuery(name = "AttendanceFlow.findAll", query = "SELECT h FROM AttendanceFlow h")
public class AttendanceFlow implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@SequenceGenerator(name = "ATTENDANCE_FLOW_ID_GENERATOR", sequenceName = "ATTENDANCE_FLOW_ID_SEQ", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ATTENDANCE_FLOW_ID_GENERATOR")
@Column(name = "ATTENDANCE_FLOW_ID")
private Integer AttendanceFlowId;
@Column(name = "DAYS_ATTENDANCE_APPROVED")
private Integer daysAttendanceApproved;
@Column(name = "NEW_DATE")
@Temporal(TemporalType.DATE)
private Date newdate;
public Date getNewdate() {
return newdate;
}
public void setNewdate(Date newdate) {
this.newdate = newdate;
}
public Integer getAttendanceFlowId() {
return AttendanceFlowId;
}
public void setAttendanceFlowId(Integer AttendanceFlowId) {
this.AttendanceFlowId = AttendanceFlowId;
}
public Integer getdaysAttendanceApproved() {
return daysAttendanceApproved;
}
public void setdaysAttendanceApproved(Integer daysAttendanceApproved) {
this.daysAttendanceApproved = daysAttendanceApproved;
}
}
Во время отладки я могу найти значение
this.attendanceApprovalEntity.getdaysAttendanceApproved
т.е. пользователь ввел значение что-то вроде 10, но после этого я не смог продолжить
main()
. В противном случае вы получите совершенно бесполезные ответы от тех, кто ничего не знает о JSF. - person BalusC   schedule 09.05.2020