【问题标题】:Primefaces Date Value does not set correct value after ajax dateSelect event updateajax dateSelect 事件更新后 Primefaces 日期值未设置正确值
【发布时间】:2020-12-01 07:04:02
【问题描述】:

在我的代码中,我的 bean 中存储了两个日期值,其中一个(recallDate)由用户从日历组件中选择。对于另一个(recallFinishDate),我正在尝试计算所选召回日期后两周的完成日期。

当用户选择召回日期时,我想通过重新呈现更新的完成日期来显示它。

问题是,当我从日历中选择一个值时,我可以看到我的 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>

【问题讨论】:

    标签: jsf primefaces calendar


    【解决方案1】:

    我找到了答案。问题在于 ViewScoped 导入。

    我已将导入从 javax.faces.bean.ViewScoped 更改为 javax.faces.view.ViewScoped,现在它可以工作了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-17
      • 2017-01-27
      • 2017-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-24
      相关资源
      最近更新 更多