Primefaces 当我使用添加到标题的按钮时,如何防止手风琴面板折叠?
我的手风琴面板有问题。我有类似的手风琴:Primefaces 当我使用添加到标题的按钮时,如何防止手风琴面板折叠?,primefaces,jsf-2.2,Primefaces,Jsf 2.2,我的手风琴面板有问题。我有类似的手风琴: <p:accordionPanel> <p:tab title="tabTitle"> <f:facet name="title"> <!-- problematic button --> <p:commandButton value="button"/> </f:facet> &
<p:accordionPanel>
<p:tab title="tabTitle">
<f:facet name="title">
<!-- problematic button -->
<p:commandButton value="button"/>
</f:facet>
<h:PanelGrid>
<p>Accordion content</p>
</h:panelGrdi>
</p:tab>
</p:accordionPanel>
手风琴内容
问题是-当我点击按钮时,整个手风琴标签都会折叠
我的问题是:如何防止手风琴在点击按钮时倒塌?同时,我想手风琴崩溃时,我点击标题,但在按钮外
我使用的是PrimeFaces 5.3和JSF 2.2.11解除头部所有事件的绑定,然后调用组件的
init
方法再次绑定它们
<p:accordionPanel widgetVar="myAccordion">
<p:tab title="tabTitle">
<f:facet name="title">
<!-- problematic button -->
<p:commandButton value="button"
onclick="PF('myAccordion').jq.find('.ui-accordion-header').unbind()"
oncomplete= "PF('myAccordion').init(PF('myAccordion').cfg)"/>
</f:facet>
<h:PanelGrid>
<p>Accordion content</p>
</h:panelGrdi>
</p:tab>
</p:accordionPanel>
手风琴内容
正如@JorgeCampos所建议的那样-我们可以使用,以防止事件从按钮到手风琴“冒泡”。有问题的代码的用法如下所示:
<p:accordionPanel>
<p:tab title="tabTitle">
<f:facet name="title">
<p:commandButton value="button" onclick="event.stopPropagation();"/>
</f:facet>
<h:PanelGrid>
<p>Accordion content</p>
</h:panelGrdi>
</p:tab>
</p:accordionPanel>
停止事件传播不会干扰这有点复杂。这里的问题是,accordion绑定了一个click事件,而accordion内部的按钮继承了这个绑定。解决方案是trick。我在这里看到两个选项,1-你在手风琴外面创建一个图层,把按钮放在上面,然后通过编程将它定位在手风琴上。2-将代码更改为不传播按钮上的单击事件。即使单击另一个元素,是否也要将其打开???@JorgeCampos-您知道如何实现不传播单击事件的效果吗?正如我所说,您必须将代码更改为不传播事件。请看这里:@JorgeCampos-谢谢。我使用了
onclick=“event.stopPropagation()”
,现在一切都按照我想要的方式工作。非常感谢您非常感谢您提供此解决方案,我已经对其进行了测试,它可以正常工作,但我发现(根据问题帖子下面的评论)使用event.stopPropagation()
在onclick
操作中使用更简单的解决方案
<p:commandButton
value="button"
onclick="event.stopPropagation();"
oncomplete="PF('someDialog').show();" <!-- open dialog by js -->
actionListener="#{someBean.someMethod}" <!-- call java method -->
update="someComponent" <!-- update component -->
/>