Javascript PrimeFaces p:blockUI动态阻止某个组件(在JSF EL条件下)?

Javascript PrimeFaces p:blockUI动态阻止某个组件(在JSF EL条件下)?,javascript,ajax,jsf,primefaces,el,Javascript,Ajax,Jsf,Primefaces,El,如何使PrimeFaces p:blockUI在EL条件下动态地阻止某个组件 用例: 手头的条件基本上是用户可以在页面上的一种模式:如果有任何超出的冲突,并且它们当前在用户请求时显示,则阻止导航树(显示超出的冲突模式,导航树被阻止),否则我们处于常规视图中,导航树应该被取消阻止(显示常规碰撞模式,导航树未被阻止) 当前的问题是,当处于“超出模式”时,当状态更改对话框将状态更改为“未超出”时,页面会将自身正确呈现/更新回常规模式,但导航树上的阴影仍然存在。。由于我们现在处于常规模式,如果没有超出的

如何使PrimeFaces p:blockUI在EL条件下动态地阻止某个组件

用例:

手头的条件基本上是用户可以在页面上的一种模式:如果有任何超出的冲突,并且它们当前在用户请求时显示,则阻止导航树(显示超出的冲突模式,导航树被阻止),否则我们处于常规视图中,导航树应该被取消阻止(显示常规碰撞模式,导航树未被阻止)

当前的问题是,当处于“超出模式”时,当状态更改对话框将状态更改为“未超出”时,页面会将自身正确呈现/更新回常规模式,但导航树上的阴影仍然存在。。由于我们现在处于常规模式,如果没有超出的冲突,我需要一些方法来取消阻止

明白了吗?:-)

好的,首先是bean属性:

/*
 * The logic of this method ensures that after status update the
 * mode is automatically put back into regular view if no followup
 * date exceeded collisions exist.
 */
public boolean isFollowupExceededCollisionsShown()
{
    return getFollowupExceededCount() > 0 ? this.followupExceededCollisionsShown : false;
}
第一次尝试:

查看显示的VDL文档 某些被阻止的属性

    <p:blockUI widgetVar="explorerBlocker"
               block=":explorer-form"
               blocked="#{collisionManager.followupExceededCollisionsShown}" />
状态更改对话框一直处于关闭状态,但上面的逻辑没有生效

我一定是做错了什么。我怀疑OK按钮的oncomplete EL表达式在被单击时没有得到重新计算。将@this添加到更新列表不会改变任何事情

                 update="@this :explorer-form:tree :collision-form:period-grid :collision-form:list :collision-form:growl"
  • 我的问题是如何最好地解决的,其中“最佳”只是首先是JSF,然后是特定于PrimeFaces的(理想情况下,这是有文档记录的!)

  • 是否可以将blockUI blocked=“#{?}”属性与EL一起使用

  • 谢谢

    一种方法是从托管Bean调用BlockUI的hide()和show()方法。
    您可以使用RequestContext来实现这一点:

    RequestContext.getCurrentInstance().execute(“widgetVar.show()”)

    另一种方法是,您可以将变量传递给JavaScript函数,然后让JavaScript函数为您处理这个问题

    onClick="func(#{elvariable})"
    
    <script type="text/javascript">
     function func(value)
     {
     if(value==something){
     widgetVar.show();
     }else{
     widgetVar.hide();
     }
     }
    </script> 
    
    onClick=“func(#{elvariable})”
    函数func(值)
    {
    如果(值==某物){
    widgetVar.show();
    }否则{
    widgetVar.hide();
    }
    }
    
                     update="@this :explorer-form:tree :collision-form:period-grid :collision-form:list :collision-form:growl"
    
    onClick="func(#{elvariable})"
    
    <script type="text/javascript">
     function func(value)
     {
     if(value==something){
     widgetVar.show();
     }else{
     widgetVar.hide();
     }
     }
    </script>