【发布时间】: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