ajax dateSelect 事件更新后,Primefaces 日期值未设置正确值
Primefaces Date Value does not set correct value after ajax dateSelect event update
在我的代码中,我的 bean 中存储了两个日期值,一个 (recallDate) 是用户从日历组件 select 编辑的。对于另一个 (recallFinishDate),我正在尝试计算 selected recallDate 两周后的完成日期。
我想在用户select召回日期时通过重新呈现来显示更新的完成日期。
问题是,当我 select 来自日历的值时,我可以看到我的 calculateRecallFinish 方法运行 正确 并进行了正确的计算,但在我的方法完成后,它会默认在 recallDate 和 recallFinishDate 上设置今天的日期值。
我想在前端查看 select 编辑和计算的召回日期。
我目前使用的是 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,现在可以使用了
在我的代码中,我的 bean 中存储了两个日期值,一个 (recallDate) 是用户从日历组件 select 编辑的。对于另一个 (recallFinishDate),我正在尝试计算 selected recallDate 两周后的完成日期。
我想在用户select召回日期时通过重新呈现来显示更新的完成日期。
问题是,当我 select 来自日历的值时,我可以看到我的 calculateRecallFinish 方法运行 正确 并进行了正确的计算,但在我的方法完成后,它会默认在 recallDate 和 recallFinishDate 上设置今天的日期值。
我想在前端查看 select 编辑和计算的召回日期。
我目前使用的是 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,现在可以使用了