Jsf 如何在PrimeFaces中有条件地隐藏/显示或启用/禁用菜单项?

Jsf 如何在PrimeFaces中有条件地隐藏/显示或启用/禁用菜单项?,jsf,primefaces,Jsf,Primefaces,我要执行以下操作:active o inactive带有管理bean(MB)的菜单项,我要使用属性“renderer”。但我不知道你喜欢这样做 我的代码如下: <p:menuitem id="registrarPatio" value="Registrar un Patio" actionListener="#{accionesRedirectMB.redireccionar('/PatioWEB/jsp/patios/registrarPatio.xhtml')}

我要执行以下操作:active o inactive带有管理bean(MB)的菜单项,我要使用属性“renderer”。但我不知道你喜欢这样做

我的代码如下:

<p:menuitem id="registrarPatio" value="Registrar un Patio"
            actionListener="#{accionesRedirectMB.redireccionar('/PatioWEB/jsp/patios/registrarPatio.xhtml')}"
            icon="ui-icon-folder-collapsed"/>
要启用或禁用(始终显示),必须创建一个布尔变量,并将其置于一个条件中,例如:

private boolean isDisabled = false; // with the getter and setter
if( condition)
{
    isDisabled = true;
}
else
{
    isDisabled = false;
}
然后,在页面中添加“已禁用渲染”属性:

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

但您也可以将条件放在答案的EL行中,该行使用“呈现”来启用或禁用(始终显示)您必须创建一个布尔变量并将其放在条件中,例如:

private boolean isDisabled = false; // with the getter and setter
if( condition)
{
    isDisabled = true;
}
else
{
    isDisabled = false;
}
然后,在页面中添加“已禁用渲染”属性:

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


但是你也可以把条件放在答案的EL行中,使用“rendered”

当我查找答案时,我得到了以下结果:

<p:menuitem id="registrarPatio" value="Registrar un Patio"
            actionListener="#{accionesRedirectMB.redireccionar('/PatioWEB/jsp/patios/registrarPatio.xhtml')}"
            icon="ui-icon-folder-collapsed"/>
这是我在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()}"/> 
“registrarPatio”是我用于active o unactive menuItem的数据,默认为true

activiVariTemperMisos()方法是我激活menuItem的地方,在这里我使用条件和在我分配到registrarPatio false之后


您可以使用“if”来验证对其应用程序中不同选项的访问

在我寻找答案的过程中,我得到了以下结果:

<p:menuitem id="registrarPatio" value="Registrar un Patio"
            actionListener="#{accionesRedirectMB.redireccionar('/PatioWEB/jsp/patios/registrarPatio.xhtml')}"
            icon="ui-icon-folder-collapsed"/>
这是我在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()}"/> 
“registrarPatio”是我用于active o unactive menuItem的数据,默认为true

activiVariTemperMisos()方法是我激活menuItem的地方,在这里我使用条件和在我分配到registrarPatio false之后


您可以使用“if”来验证对其应用程序中不同选项的访问

所以您必须更改代码:

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()}"/> 

因此您必须更改代码:

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()}"/>