我有活动安排。每个人都有一个授权的日期范围,我想防止事件被移动到其范围之外。例如,事件可能能够在01-01-2014到01-30-2014的范围内移动。我可以在控制器中找到这些参数。
planning.xhtml:
<h:form id="agenda">
<p:panel id="panelSchedule" header="Agenda" styleClass="panelSchedule">
<p:growl id="messages"/>
<h:panelGrid columnClasses="scheduleColumn">
<!-- Binding schedule and event -->
<p:schedule id="schedule"
locale="fr"
value="#{planningController.eventModel}"
widgetVar="myschedule"
resizable="false"
timeZone="CET"
timeFormat="H:mm"
columnFormat="week:'ddd dd/MM', day:'dddd dd/MM'" axisFormat="H:mm">
<p:ajax event="dateSelect"
listener="#{planningController.onDateSelect}"
update="eventDetails"
oncomplete="PF('eventDialog').show();"
disabled="#{planningController.disabledCalendar}"/>
<p:ajax event="eventSelect"
listener="#{planningController.onEventSelect}"
update="eventDetails" oncomplete="PF('eventDialog').show();" />
<p:ajax event="eventMove"
listener="#{planningController.onEventMove}"
update="messages" />
</p:schedule>
</h:panelGrid>
</p:panel>
</h:form>
planningController.java:
public void onEventMove(ScheduleEntryMoveEvent event) {
if (event move on wrong range) {
// don't move the event
} else {
// it's ok, you can move event
}
}
我不需要详细的代码,只是一个好的起点。我尝试过搜索,但我不知道使用的正确术语。
答案 0 :(得分:0)
在有关ScheduleEntryMoveEvent的PrimeFaces API中,您可以使用getDayDelta()
方法以及getScheduleEvent().getStartDate()
和getScheduleEvent().getEndDate()
进行计算,以验证修改后的事件是否为日期在允许的范围内。