How do you conditionally hide/show or enable/disable menuitems in PrimeFaces?

大兔子大兔子 提交于 2019-12-30 16:40:09

问题


I want to do the following: active o inactive a menuitem with management bean (MB), I want to use properties "renderer". But I don't Know like do it.

My code is the following:

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

With actionListener I am going to redirect the other url.

I want to create a MB, when I'll can active o unactive the menuItem with my MB.

for example:

this is my MB:

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

       "here reference of menuItem";


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

       }


  }

回答1:


To enable or disable (showing it all the time) you must create a boolean variable and you put it in a condition, for example:

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

after that, you add in your page the disabled of rendered attribute:

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

But you could also put the condition in the EL line in the answer that uses 'rendered'




回答2:


While I was finding answers, I got the following:

This my code in 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()}"/> 

I use properties "redered", rendered="#{activacionOpcionesMB.activarItemPermisos()}", where activacionOpcionesMB.activarItemPermisos() is my MB.

This is my MB:

package 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" is the data that I use for active o unactive menuItem, for default it's true.

The method activarItemPermisos() is where I active the menuItem, here I use conditional and after I assing to registrarPatio false.

You can use "if" for validate access to the different option in their applications.




回答3:


so you must change code:

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;
       }

    }
 }

and in your code 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()}"/> 


来源:https://stackoverflow.com/questions/28744582/how-do-you-conditionally-hide-show-or-enable-disable-menuitems-in-primefaces

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!