你如何在PrimeFaces中有条件地隐藏/显示或启用/禁用menuitems?

时间:2015-02-26 14:08:21

标签: jsf primefaces

我想要执行以下操作:active o使用管理bean(MB)禁用menuitem,我想使用属性" renderer"。但我不知道这样做。

我的代码如下:

<p:menuitem id="registrarPatio" value="Registrar un Patio"
            actionListener="#{accionesRedirectMB.redireccionar('/PatioWEB/jsp/patios/registrarPatio.xhtml')}"
            icon="ui-icon-folder-collapsed"/>

使用actionListener我将重定向另一个url。

我想创建一个MB,当我可以使用我的MB激活/不激活menuItem时。

例如:

这是我的MB:

 @ManagedBean (name = "activacionOpcionesMB")
  public class ActivacionOpcionesMB {

       "here reference of menuItem";


       methodActiveMenuItem(){
          here, How do you do for active it...

       }


  }

3 个答案:

答案 0 :(得分:1)

要启用或禁用(始终显示),您必须创建一个布尔变量并将其置于一个条件中,例如:

private boolean isDisabled = false; // with the getter and setter
if( condition)
{
    isDisabled = true;
}
else
{
    isDisabled = false;
}

之后,在页面中添加已禁用的渲染属性:

 <p:menuitem ... disabled=#{activacionOpcionesMB.isDisabled} />

但你也可以把条件放在使用&#39;渲染的答案的EL行中。

答案 1 :(得分:0)

当我找到答案时,我得到了以下内容:

这是我在xhtml中的代码:

  <p:menuitem id="registrarPatio" value="Registrar un Patio"
            actionListener="#{accionesRedirectMB.redireccionar('/PatioWEB/jsp/patios/registrarPatio.xhtml')}"
            icon="ui-icon-folder-collapsed" rendered="#{activacionOpcionesMB.activarItemPermisos()}"/> 

我使用属性&#34; redered&#34;,rendered =&#34;#{activacionOpcionesMB.activarItemPermisos()}&#34;,其中activacionOpcionesMB.activarItemPermisos()是我的MB。

这是我的MB:

包co.com.patios.mb.util;

 import javax.faces.bean.ManagedBean;
 import javax.faces.bean.RequestScoped;


 @ManagedBean (name = "activacionOpcionesMB")
 @RequestScoped
 public class ActivacionOpcionesMB {

    public boolean registrarPatio = true;

    public void activarItemPermisos(){
       if(true){
          registrarPatio = false;
       }
    }


 }

&#34; registrarPatio&#34;是我用于活动o unactive menuItem的数据,默认情况下它是真的。

方法activarItemPermisos()是我激活menuItem的地方,这里我使用条件并且在我向registrarPatio假设之后。

你可以使用&#34;如果&#34;用于验证对其应用程序中的不同选项的访问权限。

答案 2 :(得分:0)

所以你必须改变代码:

import javax.faces.bean.ManagedBean;
 import javax.faces.bean.RequestScoped;


 @ManagedBean (name = "activacionOpcionesMB")
 @RequestScoped
 public class ActivacionOpcionesMB {

    private boolean registrarPatio = true;


    public boolean getRegistrarPatio()
    {
        return registrarPatio;
    }

    public void setRegistrarPatio(boolean registrarPatio)
    {
        this.registrarPatio = registrarPatio;
    }



    public boolean activarItemPermisos()
    {
       if(condition)
       {
          registrarPatio = true;
       }
    else
       {
         registrarPatio = false;
       }

    }
 }

并在您的代码中使用xhtml:

<p:menuitem id="registrarPatio" value="Registrar un Patio"
            actionListener="#{accionesRedirectMB.redireccionar('/PatioWEB/jsp/patios/registrarPatio.xhtml')}"
            icon="ui-icon-folder-collapsed" rendered="#{activacionOpcionesMB.activarItemPermisos()}"/>