如何通过p:blockUI/pe:blockUI来阻止整个JSF页面被阻止?

Tin*_*iny 4 jsf blockui primefaces primefaces-extensions jsf-2.2

的示例演示阻断<h:form>通过<pe:blockUI>.

<h:form id="form" prependId="true">
    <pe:blockUI target="form" widgetVar="blockBodyUIWidget">
        <h:panelGrid columns="2">
            <h:graphicImage library="default" name="images/ajax-loader1.gif" class="block-ui-image"/>
            <h:outputText value="#{messages['blockui.panel.message']}" class="block-ui-text"/>
        </h:panelGrid>
    </pe:blockUI>

<p:commandButton id="btnSubmit" 
                 onstart="PF('blockBodyUIWidget').block()" 
                 oncomplete="PF('blockBodyUIWidget').unblock();}" 
                 update=":form:dataGrid" actionListener="#{bean.listener}" 
                 icon="ui-icon-check" 
                 value="Save">
</h:form>
Run Code Online (Sandbox Code Playgroud)

这会阻止<h:form>但是有一个带有标题和左侧栏的模板,这些模板不会被阻止.

我试图阻止<h:body id="body"> <pe:blockUI target="body"...模板页面,但是没有以一个异常结束,指示" 无法在视图中找到具有id主体的组件 ".

那么,如何定位整个页面?

虽然我使用<pe:blockUI>PrimeFaces延伸,同样的事情可以证明<p:blockUI>PrimeFaces的

Vul*_*sor 15

给你的身体一个id,然后block<p:blockUI>组件的参数上引用它.

例:

<h:body id="entirePage"/>
Run Code Online (Sandbox Code Playgroud)

<p:blockUI id="blockUI" widgetVar="blockBodyUIWidget" block=":entirePage"/>
Run Code Online (Sandbox Code Playgroud)

  • 如果页面使用模板,这不起作用. (3认同)
  • 哦,是的!我忘了在`<pe:blockUI>`的target属性中的`id`前加上`:`前缀,确实很抱歉.应该是`target =":body"`.谢谢. (2认同)