如何解决带有条件渲染命令按钮的 PrimeFaces 叠加面板导致 JS 错误
我有一个表单,其中包含一个命令按钮和一个覆盖面板。由于从 PrimeFaces 7.0.7 迁移到 Primefaces 8.0.1,我在下面收到此错误。仅当 commandButton 的渲染属性返回 false 时才会发生错误。作为一种解决方法,我只是向叠加面板添加了相同的渲染条件,并且它起作用了。但我想知道是否有人知道为什么会发生这种情况,以及是否有更好的解决方案。 谢谢。
jquery.js.faces?ln=primefaces&v=8.0.1:2 Uncaught TypeError: Cannot read property 'closest' of undefined
at c.setupDialogSupport (components.js.faces?ln=primefaces&v=8.0.1:57)
at c.init (components.js.faces?ln=primefaces&v=8.0.1:57)
at c.e.<computed> [as init] (core.js.faces?ln=primefaces&v=8.0.1:22)
at new c (core.js.faces?ln=primefaces&v=8.0.1:22)
at Object.createWidget (core.js.faces?ln=primefaces&v=8.0.1:16)
at Object.cw (core.js.faces?ln=primefaces&v=8.0.1:16)
at HTMLDocument.<anonymous> (dashbird.faces?intview=false:188)
at e (jquery.js.faces?ln=primefaces&v=8.0.1:2)
at t (jquery.js.faces?ln=primefaces&v=8.0.1:2)
setupDialogSupport @ components.js.faces?ln=primefaces&v=8.0.1:57
init @ components.js.faces?ln=primefaces&v=8.0.1:57
e.<computed> @ core.js.faces?ln=primefaces&v=8.0.1:22
c @ core.js.faces?ln=primefaces&v=8.0.1:22
createWidget @ core.js.faces?ln=primefaces&v=8.0.1:16
cw @ core.js.faces?ln=primefaces&v=8.0.1:16
(anonymous) @ dashbird.faces?intview=false:188
e @ jquery.js.faces?ln=primefaces&v=8.0.1:2
t @ jquery.js.faces?ln=primefaces&v=8.0.1:2
setTimeout (async)
k.readyException @ jquery.js.faces?ln=primefaces&v=8.0.1:2
(anonymous) @ jquery.js.faces?ln=primefaces&v=8.0.1:2
e @ jquery.js.faces?ln=primefaces&v=8.0.1:2
t @ jquery.js.faces?ln=primefaces&v=8.0.1:2
setTimeout (async)
(anonymous) @ jquery.js.faces?ln=primefaces&v=8.0.1:2
c @ jquery.js.faces?ln=primefaces&v=8.0.1:2
fireWith @ jquery.js.faces?ln=primefaces&v=8.0.1:2
fire @ jquery.js.faces?ln=primefaces&v=8.0.1:2
c @ jquery.js.faces?ln=primefaces&v=8.0.1:2
fireWith @ jquery.js.faces?ln=primefaces&v=8.0.1:2
t @ jquery.js.faces?ln=primefaces&v=8.0.1:2
setTimeout (async)
(anonymous) @ jquery.js.faces?ln=primefaces&v=8.0.1:2
c @ jquery.js.faces?ln=primefaces&v=8.0.1:2
fireWith @ jquery.js.faces?ln=primefaces&v=8.0.1:2
fire @ jquery.js.faces?ln=primefaces&v=8.0.1:2
c @ jquery.js.faces?ln=primefaces&v=8.0.1:2
fireWith @ jquery.js.faces?ln=primefaces&v=8.0.1:2
ready @ jquery.js.faces?ln=primefaces&v=8.0.1:2
B @ jquery.js.faces?ln=primefaces&v=8.0.1:2
xhtml
<h:panelGroup id="aPanel" layout="block">
<p:commandButton id="aButton" title="A Button" icon="fa fa-archive" style="padding: 4px 0px;"
rendered="#{aController.isPermission()}"/>
<p:overlayPanel id="anOverlayPanel" style=" position: fixed" for="aButton" hideEffect="fade"
widgetVar="anOverlayPanelWid">
<h:panelGroup layout="block">
<h:outputText value="Comment" styleClass="margin-lr-5"/>
</h:panelGroup>
<h:panelGroup layout="block" styleClass="margin-tb-5">
<p:inputTextarea styleClass="sb-input margin-lr-5" value="#{aController.aComment}"/>
</h:panelGroup>
<h:panelGroup layout="block">
<p:commandButton value="Save this comment"
action="#{aController.createEntry()}"
oncomplete="PF('anOverlayPanelWid').hide();"
styleClass="margin-lr-5"
icon="sb-btn-icon fa fa-archive"/>
<p:commandButton value="Cancel}"
onclick="PF('anOverlayPanelWid').hide();"
styleClass="margin-lr-5"
icon="sb-btn-icon fa fa-remove"/>
</h:panelGroup>
</h:panelGroup>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。