Я работаю с компонентом расписания Primefaces 6.2 уже несколько дней и не могу найти ответ, чтобы решить свои проблемы с помощью компонента.Мне нужен технический совет по этому вопросу.
Я создал представление с компонентом Schedule внутри композиции, например так:
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:form id="content-form">
<p:outputPanel id="page-title-myevents">
<h3>#{translations['pvm_myevents']}</h3>
</p:outputPanel>
<h5>#{translations['misc_myscheduler']}</h5>
<p:schedule id="myScheduler" value="#{myEventsBean.eventModel}" widgetVar="myscheduler" timeZone="#{appSettingsBean.uiTimeZone}">
<p:ajax event="dateSelect" listener="#{myEventsBean.onDateSelect}" update="myEventDetails" oncomplete="PF('myEventDialog').show();" />
<p:ajax event="eventSelect" listener="#{myEventsBean.onEventSelect}" update="myEventDetails" oncomplete="PF('myEventDialog').show();" />
<p:ajax event="eventMove" listener="#{myEventsBean.onEventMove}" update="myEventMessages" />
<p:ajax event="eventResize" listener="#{myEventsBean.onEventResize}" update="myEventMessages" />
</p:schedule>
<p:dialog widgetVar="myEventDialog" header="Event details" modal="true">
<h:panelGrid id="myEventDetails" columns="2">
<p:outputLabel for="myEventTitle" value="#{translations['fld_eventtitle']}" />
<p:inputText id="myEventTitle" value="#{myEventsBean.event.title}" required="true" />
<p:outputLabel for="myEventFrom" value="#{translations['fld_from']}" />
<p:calendar id="myEventFrom" value="#{myEventsBean.dateFrom}" timeZone="#{appSettingsBean.uiTimeZone}" pattern="#{appSettingsBean.uiDateTimePattern}" />
<p:outputLabel for="myEventTo" value="#{translations['fld_to']}" />
<p:calendar id="myEventTo" value="#{myEventsBean.dateTo}" timeZone="#{appSettingsBean.uiTimeZone}" pattern="#{appSettingsBean.uiDateTimePattern}" />
<p:outputLabel for="myEventAllDay" value="#{translations['fld_allday']}" />
<h:selectBooleanCheckbox id="myEventAllDay" value="#{myEventsBean.event.allDay}" />
<p:commandButton id="myEventResetForm" type="reset" value="#{translations['btn_reset']}" />
<p:commandButton id="myEventUpdate" value="Save" action="#{myEventsBean.addEvent}" oncomplete="PF('myscheduler').update();PF('myEventDialog').hide();" />
</h:panelGrid>
</p:dialog>
<p:messages id="myEventMessages" showDetail="true" closable="true">
<p:autoUpdate />
</p:messages>
<hr></hr>
</h:form>
</ui:composition>
У меня есть различные композиции, и все они загружаются внутримой dashboard.xhtml примерно так:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<ui:include src="/themes/theme.xhtml"/>
<h:body>
<ui:insert name="header" >
<ui:include src="/main-dashboard/my-topnav.xhtml"/>
</ui:insert>
<ui:insert name="content" >
<ui:include src="/main-dashboard/my-sidenav.xhtml"/>
<p:outputPanel id="dashboard-container">
<ui:include src="/main-dashboard/my-sidenavtoggler.xhtml"/>
<p:outputPanel id="content-window">
<p:outputPanel id="content-panel">
<ui:include src="#{contentLoaderBean.mainContent}" />
</p:outputPanel>
</p:outputPanel>
</p:outputPanel>
</ui:insert>
</h:body>
</html>
Это моя первая композиция, которая на самом деле построена (другие еще пусты).Я загружаю в него простую ScheduleModel на @ PostConstruct внутри компонента @ ViewScoped .Поскольку в моей базе данных еще не было бы никаких событий, я установил модель следующим образом: setEventModel(new DefaultScheduleModel());
ПЕРВЫЙ ВЫПУСК : Если я поместил несколько случайно сгенерированных событий в модель,иногда они отображаются в виде, иногда нет.Я не понимаю, почему это вообще происходит.Я не получаю никаких ошибок в консоли Java или Javascript, это просто случайно.Ленивая модель работает так же.
ВТОРОЙ ВЫПУСК : пустая или полная модель расписания, не имеет значения.Когда страница загружается, я обычно получаю предупреждение Javascript:
jquery.js.xhtml? Ln = primefaces & v = 6.2: 4 [Устаревание] Синхронный XMLHttpRequest в основном потоке устарел из-за его вредных эффектовдо опыта конечного пользователя.Для получения дополнительной помощи, проверьте https://xhr.spec.whatwg.org/
ТРЕТИЙ ВЫПУСК : Возможно, вы заметили, у меня также есть диалогвнутри формы контента.Это диалоговое окно запускается при событии выбора даты, и когда я пытаюсь выбрать дату из компонента datepicker, он выдает интересную ошибку Javascript (необработанную ошибку типа), например:
Это интереснопотому что, если я пытаюсь сделать то же самое в Firefox, он выдаст другую ошибку, например:
Microsoft Edge вообще не выдает ошибки .
УВЕДОМЛЕНИЕ : Datepicker также может быть проблемой, так как он не появляется при загрузке расписания и показывает модель со случайно сгенерированными данными.Если планировщик не может загрузить модель, всплывающее окно datepicker выдает ошибку типа uncaught type, когда выбрана какая-либо дата.
Неважно, какую дату выбрать, выбрасываются ошибки.Поскольку запросы Ajax не запускаются правильно, методы bean-компонентов вообще не запускаются, поэтому я думаю, что это должно быть что-то на стороне представления, которое необходимо исправить правильно.
Я пробовал и отключил всепользовательский импорт css и js (использую Bootstrap 4.2.1 css и js для целей проектирования) и очищенные вручную каталоги развертывания.Я также удостоверился, что мой проект загружен без старых ресурсов, очистив историю браузера и кеш.До сих пор мне не удавалось исправить эти проблемы (все предупреждения и ошибки остались прежними).
Я не знаю, связаны ли все три проблемы или нет, но я разместил их в одном посте.Иногда решая одну проблему, решает и другие.Поскольку все они происходят в одном составе, это может быть снова.
Дайте мне знать, если я могу предоставить более подробную информацию любым способом, и я сделаю то, что могу.
СпасибоВы.
РЕДАКТИРОВАТЬ : Основано на полученных комментариях от @Melloware.Обновление Primefaces 6.2 до Primefaces 7-RC2 решило некоторые проблемы для меня.Предупреждения об устаревании и необработанные ошибки типов исчезли.Первая проблема все еще остается.Компонент расписания не отображает объекты расписания или «события».В режиме отладки я обнаружил, что объекты расписания создаются и передаются в модель расписания.Все, что мне сейчас нужно, это компонент вида, чтобы показать их.