You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PrimeFaces 7升级至8后Schedule组件无法显示事件问题

PrimeFaces 7升级到8后Schedule组件无法显示事件

升级PrimeFaces从7版本到8版本后,Schedule组件无法正常显示事件,升级前该功能运行完全正常。对应的xhtml代码如下:

<p:panel style="margin-right: 3px;margin-bottom: 3px"
                        rendered="#{dashboardBean.renderedAjandam}" closable="true"
                        toggleable="true" id="ajandam" header="Ajandam" resize="true"
                        autosize="true" scrollable="true">
                        <h:form>
                            <p:scrollPanel mode="native" style="border: hidden;height:375px"
                                columnClasses="value">

                                <p:schedule id="schedule" value="#{hatirlaticiBean.eventModel}"
                                    locale="tr" timeZone="GMT+3">
                                    <p:ajax event="dateSelect"
                                        listener="#{hatirlaticiBean.onDateSelect}"
                                        update=":frmeventDialog:eventDetails"
                                        oncomplete="PF('eventDialog').show();" />
                                    <p:ajax event="eventSelect"
                                        listener="#{hatirlaticiBean.onEventSelect}"
                                        update=":frmeventDialog:eventDetails"
                                        oncomplete="PF('eventDialog').show();" />
                                    <p:ajax event="eventMove"
                                        listener="#{hatirlaticiBean.onEventMove}"
                                        update=":frmLytCenter:messages" />
                                    <p:ajax event="eventResize"
                                        listener="#{hatirlaticiBean.onEventResize}"
                                        update=":frmLytCenter:messages" />

                                </p:schedule>
                            </p:scrollPanel>
                        </h:form>
                        <p:ajax event="close" listener="#{dashboardBean.onClose}"
                            update=":frmLytCenter,messages" />
                    </p:panel>

针对这个问题,你可以从以下几个方向排查解决:

  • 检查事件模型的属性规范:PrimeFaces 8的Schedule底层替换为FullCalendar 4,对事件对象的属性要求更严格。确保你的eventModel中的每个事件:

    • 开始时间属性为start(旧版本允许的startDate不再兼容)
    • 结束时间属性为end(旧版本的endDate需改为end)
    • 全天事件必须显式设置allDay为布尔值(注意大小写,不能是字符串)
  • 验证时区配置:将timeZone属性值替换为标准时区ID,比如Europe/Istanbul而非GMT+3。同时确认后台生成事件日期时,已正确转换到指定时区,避免因时区偏移导致事件被渲染到不可见的时间段。

  • 确认本地化资源加载:土耳其语(tr)的FullCalendar本地化资源需正确加载。检查项目中是否包含fullcalendar-locale-tr.js,并确保页面能正确引入该文件(PrimeFaces可能不会自动加载所有locale资源)。

  • 移除嵌套的scrollPanel:尝试把Schedule组件直接放在h:form内,去掉外层的p:scrollPanel。PrimeFaces 8的Schedule尺寸计算逻辑可能和scrollPanel存在冲突,导致事件区域渲染异常。

  • 排查Bean作用域与数据更新:确保hatirlaticiBean使用@ViewScoped作用域,避免每次请求都重新创建事件模型。同时检查AJAX操作后,eventModel是否能正确返回最新的事件数据。

  • 查看浏览器控制台错误:打开浏览器开发者工具的Console面板,查看是否有FullCalendar初始化失败、资源加载错误等JS异常,这些通常是组件无法显示事件的直接原因。

内容的提问来源于stack exchange,提问作者Cagatayyy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 19:45:43