【问题标题】:Primefaces OverlayPanel inside composite component复合组件内的 Primefaces OverlayPanel
【发布时间】:2014-06-24 07:12:48
【问题描述】:

我正在开发一个复合组件来集中和重用 primefaces 组件:

<?xml version="1.0"?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:bridge="http://portletfaces.org/bridge"
xmlns:m3="http://java.sun.com/jsf/composite/m3jsf"
xmlns:Portlet="http://java.sun.com/portlet_2_0"
xmlns:composite="http://java.sun.com/jsf/composite">
<composite:interface>
    <composite:attribute name="rendered" type="java.lang.Boolean" default="true"/>
</composite:interface>
<composite:implementation>
    <span id="#{cc.clientId}">
        <p:overlayPanel id="idPanelloListaDatiFullScreen" dynamic="true" appendToBody="false" 
        styleClass="m3PanelListaDati" binding="#{m3DataTableBackingBean.bindingVarOverlay}" 
        rendered="#{cc.attrs.rendered}">
        </p:overlayPanel>   
        <p:panel id="idPanelloListaDati" styleClass="m3PanelListaDati" 
        rendered="#{cc.attrs.rendered}">
            <composite:insertChildren></composite:insertChildren>
        </p:panel>
    </span>
</composite:implementation>

我在视图中使用它:

<m3:myCompositePanel id="idCompositePanel/>

但是当视图渲染时出现异常:

Caused by: java.lang.NullPointerException
at javax.faces.component.UIComponentBase.findComponent(UIComponentBase.java:567)
at org.primefaces.component.overlaypanel.OverlayPanelRenderer.encodeScript(OverlayPanelRenderer.java:67)
at org.primefaces.component.overlaypanel.OverlayPanelRenderer.encodeEnd(OverlayPanelRenderer.java:37)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:881)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312)
at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:105)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:851)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
at com.sun.faces.renderkit.html_basic.CompositeRenderer.encodeChildren(CompositeRenderer.java:78)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:851)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:851)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:439)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:124)
at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:286)
at com.liferay.faces.bridge.application.ViewHandlerCompatImpl.renderView(ViewHandlerCompatImpl.java:35)
at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:286)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
... 219 more

我正在使用 PirmeFaces 3.5.23、mojarra 2.1.21,我正在 Liferay 6.1.3ga3 和 bridge 3.1.3ga4 中开发一个 portlet

感谢您的帮助

【问题讨论】:

    标签: jsf primefaces liferay-6


    【解决方案1】:

    PrimeFaces OverlayPanelRenderer.java 类的第 67 行正在尝试解析 for 属性的值。看起来您可能忘记在 p:overlayPanel 中为 for 属性指定一个值。

    【讨论】:

    • 嗨,尼尔,是的。我傻傻的忘记了!非常感谢
    猜你喜欢
    • 1970-01-01
    • 2012-07-03
    • 2012-06-25
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    • 2011-10-10
    • 2012-07-26
    相关资源
    最近更新 更多