【问题标题】:How do you conditionally hide/show or enable/disable menuitems in PrimeFaces?您如何有条件地隐藏/显示或启用/禁用 PrimeFaces 中的菜单项?
【发布时间】:2015-02-26 14:08:21
【问题描述】:

我想做以下事情:活动或不活动的带有管理 bean (MB) 的菜单项,我想使用属性“渲染器”。但我不知道喜欢这样做。

我的代码如下:

<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...

       }


  }

【问题讨论】:

    标签: jsf primefaces


    【解决方案1】:

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

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

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

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

    但您也可以将条件放在使用“渲染”的答案中的 EL 行中

    【讨论】:

      【解决方案2】:

      在寻找答案时,我得到了以下信息:

      这是我在 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()}"/> 
      

      我使用属性“redered”,rendered="#{activacionOpcionesMB.activarItemPermisos()}",其中 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;
             }
          }
      
      
       }
      

      “registrarPatio”是我用于活动或非活动菜单项的数据,默认为 true。

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

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

      【讨论】:

        【解决方案3】:

        所以你必须更改代码:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-24
          • 2019-12-16
          • 2020-11-24
          • 1970-01-01
          • 2018-05-01
          • 1970-01-01
          相关资源
          最近更新 更多