【问题标题】:Set p:calendar date and time to DefaultScheduleEvent's startDate and endDate将 p:calendar 日期和时间设置为 DefaultScheduleEvent 的 startDate 和 endDate
【发布时间】:2018-07-05 19:33:09
【问题描述】:

我有一个p:schedule,其中有一个p:ajax 的事件日期选择。打开一个弹出窗口,可以输入DefaultScheduleEvent - 标题、开始日期、结束数据等。我参考了代码here

但是,当我单击转到 ManagedBean 中的 actionListener 的 p:commandButton 时,没有根据用户输入在 bean 中设置 startDate 和 endDate。存储默认值。如何获取用户的输入并在 Bean 中使用?

前端xhtml:

<p:panel header="Calendar" style="height:100%">
                    <p:schedule value="#{studentCalendarBean.eventModel}" leftHeaderTemplate="prev,next" draggable="false" rightHeaderTemplate="" widgetVar="viewSchedule" timeFormat="">
                        <p:ajax event="dateSelect" process="@this" listener="#{studentCalendarBean.onDateSelect}" update="addEventDetails" oncomplete="PF('eventAddDialog').show();" />
                    </p:schedule>
                    <p:dialog widgetVar="eventAddDialog" header="Request New Lesson" showEffect="clip" hideEffect="clip">
                    <h:panelGrid id="addEventDetails" columns="2">
                        <p:outputLabel for="title-a" value="Title:" />
                        <p:inputText id="title-a" value="#{studentCalendarBean.event.title}" required="true" valueChangeListener="#{studentCalendarBean.event.title}"/>

                        <p:outputLabel for="from-a" value="From:" />
                        <p:calendar id="from-a" value="#{studentCalendarBean.event.startDate}" timeZone="GMT+2" pattern="dd/MM/yyyy HH:mm" mask="99/99/9999 99:99">
                            <p:ajax event="dateSelect" listener="#{studentCalendarBean.startDateChanged}" />
                        </p:calendar>

                        <p:outputLabel for="to-a" value="To:" />
                        <p:calendar id="to-a" value="#{studentCalendarBean.event.endDate}" timeZone="GMT+2" pattern="dd/MM/yyyy HH:mm" mask="99/99/9999 99:99"/>

                        <p:commandButton type="reset" value="Reset" />
                        <p:commandButton id="addEventButton" value="Schedule" actionListener="#{studentCalendarBean.scheduleNewEvent}" oncomplete="PF('viewSchedule').update();PF('eventAddDialog').hide();" />
                    </h:panelGrid>
                </p:dialog>
</p:panel>

托管 Bean 代码:

@Named
@SessionScoped public class StudentCalendarBean implements Serializable {

private static final long serialVersionUID = 4421935956943227260L;

private ScheduleModel eventModel;

private ScheduleEvent event;

@PostConstruct
public void init() {
    event = new DefaultScheduleEvent();
    //populate events calendar
    logger.info("StudentCalendarBean: Initializing");
    eventModel = getAllEvents(); //defined
}

public void scheduleNewEvent() {
    logger.info("StudentCalendarBean: Creating new schedule");
    //Having problem here - startDate and endDate are set to Default!!!!
    if (event.getId() == null) {
        Schedule newSchedule = new Schedule();
        if (validateEvent(event)) {
            newSchedule = newEventToNewSchedule(event);
        }
        //update database
        studentCalendarLogic.addNewSchedule(newSchedule);
        //update view
        eventModel.addEvent(event);
    }
    //reset default event
    event = new DefaultScheduleEvent();
}

 public void onDateSelect(SelectEvent selectEvent) {
    event = new DefaultScheduleEvent("", (Date) selectEvent.getObject(), (Date) selectEvent.getObject());
}


}

【问题讨论】:

  • 一切都在一个表格中吗?

标签: datetime jsf primefaces


【解决方案1】:

我看到你的呼唤...

value="#{studentCalendarBean.event.title}"

但我在你的 studentCalendarBean 中没有看到 Event 的 setter/getter,那么它怎么可能从事件中获取值?

【讨论】:

  • getter/setter 实际上不存在会导致错误(不幸的是,并不总是在 PF 中)。不幸的是,大多数人不会发布minimal reproducible example(在没有空格的评论中输入 [ mcve ])
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-23
  • 1970-01-01
相关资源
最近更新 更多