Theme
BlockUI
This example shows how to use "autoShow" mode activated by setting the attribute "autoShow" to true. Another feature is the "event" attribute which specifies which events should be listen. Skipping "event" means we are not interested in any events. That means all events of the source component cause a blocking of the target component(s). Only events specified by p:ajax are supported. PrimeFaces components can also send ajax requests without p:ajax, but such events are internal and not exposed. BlockUI don't support such events. The "target" attribute allows to specify several target components and HTML elements to be blocked. The syntax of the "target" attribute is the same as e.g. for "process" and "update" attributes in p:ajax.

Try to expand, select, unselect a tree node on the left side or click on any checkbox on the right side.
No tree node is selected
Source

<h:panelGroup id="viewArea" layout="block">
    <h:panelGrid columns="2" columnClasses="columnTop,columnTop">
        <h:panelGroup layout="block" styleClass="blockable" style="margin-right: 40px;">
            <p:tree id="fileSystem" value="#{fileSystemController.root}" var="node" dynamic="true"
                    cache="false" selectionMode="single" selection="#{fileSystemController.selectedNode}">
                <p:ajax event="expand" update=":mainForm:accessRightsGroup"
                        listener="#{fileSystemController.onNodeExpand}"/>
                <p:ajax event="select" update=":mainForm:accessRightsGroup"
                        listener="#{fileSystemController.onNodeSelect}"/>
                <p:ajax event="unselect" update=":mainForm:accessRightsGroup"
                        listener="#{fileSystemController.onNodeUnselect}"/>
                <p:treeNode>
                    <h:outputText value="#{node}"/>
                </p:treeNode>
            </p:tree>
        </h:panelGroup>

        <h:panelGroup layout="block" id="accessRightsGroup" styleClass="blockable" style="width: 250px;">
            <h:outputText value="Access rights for #{fileSystemController.selectedNode.data}"
                          rendered="#{not empty fileSystemController.selectedNode}"/>
            <h:outputText value="No tree node is selected" rendered="#{empty fileSystemController.selectedNode}"/>

            <h:selectManyCheckbox id="accessRights" value="#{accessRightsController.selectedAccessRights}"
                                  styleClass="checkBoxes" layout="pageDirection" style="margin-top: 10px;">
                <f:selectItems value="#{accessRightsController.accessRights}"/>
                <p:ajax process="@this"/>
            </h:selectManyCheckbox>

            <pe:blockUI source="accessRights" target="@(.blockable)" autoShow="true">
                <h:panelGrid columns="2">
                    <h:graphicImage library="images" name="ajax-loader1.gif"
                                    style="margin-right: 12px; vertical-align: middle;"/>
                    <h:outputText value="Checkbox clicked..." style="white-space: nowrap;"/>
                </h:panelGrid>
            </pe:blockUI>
        </h:panelGroup>
    </h:panelGrid>
</h:panelGroup>

<pe:blockUI source="fileSystem" target="viewArea" event="expand,select,unselect" autoShow="true">
    <h:panelGrid columns="2">
        <h:graphicImage library="images" name="ajax-loader1.gif"
                        style="margin-right: 12px; vertical-align: middle;"/>
        <h:outputText value="Tree event is running..." style="white-space: nowrap;"/>
    </h:panelGrid>
</pe:blockUI>
            
Components and more
Documentation pe:blockUI
Attributes (move mouse over the names to see data types)
Name Description
id Unique identifier of the component in a namingContainer.
rendered Boolean value to specify the rendering of the component, when set to false component will not be rendered.
binding An EL expression referring to a server side UIComponent instance in a backing bean.
widgetVar Name of the client side widget.
css Styles for the message when blocking. Styles should be defined as JSON object, e.g. {backgroundColor: 'fff', width: 30%}.
cssOverlay Styles for the overlay. Styles should be defined as JSON object, e.g. {opacity: 0.4, backgroundColor: 'red'}
source Specifies component(s) which send(s) an ajax request and triggers blocking. If nothing specified, the parent component is used.
target Specifies component(s) or HTML element(s) to be blocked. If the target is null or not defined, the entire page is blocked.
content Id of the component in terms of findComponent to be used as content shown during blocking. If nothing specified, the content of blockUI component is used.
event Name(s) of one or several accepted events. Several events should be defined as space or comma separated list.
autoShow Flag whether the blocking is shown automatically without the need to use JavaScript widget. Default value is false.
timeout Time in millis to wait before auto-unblocking. Don't define it or set to 0 to disable auto-unblock. Default value is 0.
centerX Set this attribute to true to have the message automatically centered along the X axis. Note: it only effects element blocking (page blocking controlled by CSS via the css attribute). Default value is true.
centerY Set this attribute to true to have the message automatically centered along the Y axis. Default value is true.
fadeIn Fade In time in millis; set to 0 to disable fadeIn on block.
fadeOut Fade Out time in millis; set to 0 to disable fadeOut on unblock.
showOverlay Disable if you do not want to show the overlay. Default value is true.
focusInput Focus will be placed in the first available input field when page blocking. Default value is true.
PrimeFaces Extensions Showcase - © 2011-2021,PrimeFaces: 11.0.0,PrimeFaces Extensions: 11.0.3,JSF: Apache MyFaces JSF-2.3 Core API 2.3.9,Server: jetty/9.4.36.v20210114,Build time: 2022-04-17 14:55
occured!