如何从p:tab标题中排除h:selectBooleanCheckbox?

时间:2013-05-22 11:51:51

标签: jsf primefaces

问题如下:我需要通过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>     

2 个答案:

答案 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