问题如下:我需要通过facet在Primefaces p:tab title中添加复选框,但是当我点击复选框时我不想打开标签。
以下是代码段。
<p:accordionPanel multiple="true" activeIndex="">
<p:tab rendered="#{condition}">
<f:facet name="title">
<div>
<h:selectBooleanCheckbox styleClass="simple-checkbox" value="#{someValue}" >
<p:ajax event="click" process="@this"
action="#{some action}"
update="some elements" global="false" />
</h:selectBooleanCheckbox>
<h:outputText value="some text" />
</div>
</f:facet>
Tab Body
</p:tab>
</p:accordionPanel>
答案 0 :(得分:0)
因为事件被传递给他们的父母。有一种方法可以通过将jQuery添加到您的视图来防止使用jQuery:
<script>
$(document).ready(
function()
{
$(".ui-accordion-header .simple-checkbox").click(function(e)
{
e.stopPropagation();
});
}
);
</script>
注意:我已将.ui-accordion-header
添加到选择器,以防止将其应用于所有复选框。
更多信息:
答案 1 :(得分:0)
您可以将event.stopPropagation();
添加到onclick
<h:selectBooleanCheckbox
喜欢这个
<h:selectBooleanCheckbox onclick="event.stopPropagation();"...
另外,最好不要将p:ajax
嵌套在JSF本机组件中,反之亦然......
f:ajax
旨在与原生JSF组件一起使用
p:ajax
适用于PrimeFaces组件
在一个页面中同时使用Primefaces组件和JSF本机组件是很好的,只需确保在Primefaces组件中使用p:ajax
并在JSF本机组件中使用f:ajax