在我的代码中,我的bean中存储了两个日期值,其中一个(recallDate(由用户从日历组件中选择。对于另一个(recallFinishDate(,我正在尝试计算完成日期,即所选recallDate之后的两周。
当用户选择召回日期时,我想通过重新报价来显示更新的完成日期。
问题是,当我从日历中选择一个值时,我可以看到我的calculateRecallFinish方法正确地运行了并进行了正确的计算,但在我的方法完成后,默认情况下,它会将今天的日期值设置为recallDate和recallFinishDate。
我想在前端查看选定和计算的召回日期。
我目前使用的是primefaces 6.0版
这是我的代码
@Named("updatePlanning")
@ViewScoped
public class UpdatePlanningView extends BaseView implements Serializable {
private static final long serialVersionUID = -7354105373870032645L;
private Date recallDate = new Date();
private Date recallFinishDate = new Date();
/**
Initialize methods and getter setters are here
**/
public void calculateRecallFinish(SelectEvent e) {
recallDate = (Date) e.getObject();
Calendar calendar = Calendar.getInstance();
calendar.setTime(recallDate);
calendar.add(Calendar.DAY_OF_YEAR, (14));
recallFinishDate = calendar.getTime();
}
}
我的前端xhtml代码是这样的;
<p:calendar id="recallDate" value="#{updatePlanning.recallDate}" showOn="button" navigator="true" styleClass="form-calendar">
<p:ajax event="dateSelect"
listener="#{updatePlanning.calculateRecallFinish}" global=true update="@form"> </p:ajax>
</p:calendar>
<p:inputText disabled="true" id="recallFinishDate" value="#{updatePlanning.recallFinishDate}">
</p:inputText>
我找到了答案。问题是ViewScoped导入。
我已经将导入从javax.faces.bean.ViewScoped更改为javax.faces.view.ViewScoped,现在它可以使用