获取计算出的天数的空值/添加的当前日期加上用户输入的值

问题描述 投票:0回答:2

获取计算的天数的空值/添加的当前日期加上用户输入的值

我们正在根据用户输入的值来计算列值,即用户输入的天数加上当前日期。

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然后2020年5月8日加10输出将是2020年5月18日在设置的NewDate

问题

setNewdate setdaysAttendanceApprovedWithAdditionalDays被设置为null

<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,但此后我无法继续操作

获取已计算天数/当前日期的空值/当前日期加上用户输入的值,我们正在根据用户输入的值(即用户输入的天数加上...]计算列值,

java date jsf calendar localdate
2个回答
0
投票
改为使用GregorianCalendar类。今天的日期可以通过date=new GregorianCalendar()获得,用户输入的数字可以通过date.add(Calendar.DAY_OF_MONTH,number)添加。

0
投票
使用LocalDate而不是过时的DateCalendar。检查this了解更多详情。
© www.soinside.com 2019 - 2024. All rights reserved.