我正在摆弄primefaces 展示中的计划演示代码(使用版本 3.3.1),并且我需要在移动/调整大小事件侦听器上调整计划的一些值。(我将使用“计划项目”来提及数据模型对象“计划的事件”,并为 API 触发的用户交互响应保留术语“事件”)。
因此,每当用户在界面上移动/调整计划项目的大小时,注册的事件侦听器就会触发,显示当天增量、分钟增量消息,就像展示示例一样。
但我需要对项目做一些修改,即:
a)确保计划的项目不在周末开始/结束(也是假期,但让我们忽略这一点)。将项目的开头/结尾向后或向前移动到前一个工作日(如果它从周末开始)或移动到下一个工作日(如果它在周末结束)
b) 使项目捕捉到最接近的一刻钟。
c) 确保预定项目不在上午 700 点之前或下午 2100 点之后开始/结束。如果超出这些限制,则将开始/结束时间捕捉到这些限制。
并在用户界面上显示产生的变化。但我无法在事件侦听器方法期间编辑数据模型。
这是时间表标签:
<p:schedule value="#{scheduleController.eventModel}"
widgetVar="myschedule" view="agendaWeek" allDaySlot="false"
slotMinutes="15" firstHour="7" showWeekends="FALSE"
leftHeaderTemplate="prev,next" rightHeaderTemplate=""
minTime="7am" maxTime="21pm" timeFormat="dd/MM H:mm{ - dd/MM H:mm}"
axisFormat="HH" timeZone="#{rotulo.timeZone}">
<p:ajax event="dateSelect"
listener="#{scheduleController.onDateSelect}"
update="eventDetails" oncomplete="eventDialog.show()" />
<p:ajax event="eventSelect"
listener="#{scheduleController.onEventSelect}"
update="eventDetails" oncomplete="eventDialog.show()" />
<p:ajax event="eventMove"
listener="#{scheduleController.onEventMove}" update="messages" />
<p:ajax event="eventResize"
listener="#{scheduleController.onEventResize}" update="messages" />
</p:schedule>
而托管的bean方法......
public void onEventMove(ScheduleEntryMoveEvent event) {
doBusinessLogic((DefaultScheduleEvent) event.getScheduleEvent());
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Event moved", "Day delta:" + event.getDayDelta() + ", Minute delta:" + event.getMinuteDelta());
addMessage(message);
}
public void onEventResize(ScheduleEntryResizeEvent event) {
doBusinessLogic((DefaultScheduleEvent) event.getScheduleEvent());
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Event resized", "Day delta:" + event.getDayDelta() + ", Minute delta:" + event.getMinuteDelta());
addMessage(message);
}
doBusinessLogic()
我将在其中调整时间值。如何进行更改以反映DefaultScheduleEvent
时间表的数据模型?