failure to create primefaces menubar level

UI Components for JSF
senthilkumar.89
Posts: 100
Joined: 29 Jan 2014, 03:41

17 Mar 2014, 18:53

andyba wrote:You have been asked, politely, to read the forum rules and use code tags to format the code you post. I am asking you, again politely, to do so.
Using code tags is not us being fussy, it makes your code much easier for us to read. Without this you will find people, like me, won't be prepared to make much effort to help you.
yeah sir i have pasted the code used in the managed bean.it is the last second post i have posted.by the way what is code tags

here is the xhtml part
-------------------------------------------------------
<code>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core">

<h:form name="top_menu_form" styleClass="ui-form">
<p:menubar styleClass="uicolor" model="#{topMenuBean.model}">

</p:menubar>

</h:form>

</ui:composition>
</code>

------------------------------------------------------

here is the mangaed bean part
------------------------------------------------------
<code>
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.component.UIComponent;

import org.primefaces.component.menuitem.UIMenuItem;
import org.primefaces.model.menu.DefaultMenuItem;
import org.primefaces.model.menu.DefaultMenuModel;
import org.primefaces.model.menu.DefaultSubMenu;
import org.primefaces.model.menu.MenuColumn;
import org.primefaces.model.menu.MenuElement;
import org.primefaces.model.menu.MenuModel;

@ManagedBean(name = "topmenu1")
@RequestScoped
public class TopMenuBean1 {

private MenuModel model;
private String current_module = "No module chosen ...";
private ArrayList<UserMenus> um_list;

@SuppressWarnings("unchecked")
public TopMenuBean1() {

this.um_list = new ArrayList<UserMenus>();
this.um_list.addAll((ArrayList<UserMenus>) utils.execute_VE("#{loginBean.ua.user_menus}", ArrayList.class));
this.current_module = (String) utils.execute_VE("#{loginBean.ua.current_module}", String.class);
this.model = new DefaultMenuModel();
}

@PostConstruct
public void construct_top_menu() {
String menu_item_id_prefix;

String base_path = utils.get_base_path();

System.out.println("About to construct top menu and Base path is ---> " + base_path);

Collections.sort(this.um_list, new Comparator<UserMenus>() {
@Override
public int compare(UserMenus u1, UserMenus u2) {
return (u1.getMenu_id() * 100 + u1.getParent_menu_id()) - (u2.getMenu_id() * 100 + u2.getParent_menu_id());
}
});

UserMenus user_menu_item;
DefaultSubMenu submenu = null;
DefaultMenuItem dmf = null;
DefaultMenuItem dmf1 = null;
DefaultSubMenu dsm = null;
for (int i = 0 ; i < this.um_list.size() ; i++) {
System.out.println("hey");
user_menu_item = this.um_list.get(i);
menu_item_id_prefix = "Top_" + Integer.toString(user_menu_item.getMenu_id()) + "_";
System.out.println(hasChildren(user_menu_item) + "-----------------");
if (hasChildren(user_menu_item)) {
submenu = new DefaultSubMenu();
submenu.setLabel(user_menu_item.getMenu_display_name());
submenu.setId(menu_item_id_prefix + user_menu_item.getMenu_display_name().replace(' ', '_'));

DefaultSubMenu parent = this.parentItem(user_menu_item);

if (parent == null) {
this.model.addElement(submenu);
} else {
parent.getElements().add(submenu);
submenu.addElement(parent);
}

} else {
DefaultMenuItem item = new DefaultMenuItem();
item.setId(menu_item_id_prefix + user_menu_item.getMenu_display_name().replace(' ', '_'));
item.setValue(user_menu_item.getMenu_display_name());
item.setTitle(user_menu_item.getMenu_display_name());
item.setUrl(base_path + "/" + user_menu_item.getUrl() + "?mn=" + user_menu_item.getMenu_id());

DefaultSubMenu parent = this.parentItem(user_menu_item);

if (parent == null) {
this.model.addElement(item);
} else {
parent.getElements().add(item);
}
}

}

}

private Boolean hasChildren(UserMenus um) {
int i;
for (i = 0 ; i < this.um_list.size() && !(um_list.get(i).getParent_menu_id() == um.getMenu_id()) ; i++)
;
return (i < this.um_list.size());
}

public MenuModel getModel() {
return model;
}

public void setModel(MenuModel model) {
this.model = model;
}

public String getCurrent_module() {
return current_module;
}

public void setCurrent_module(String current_module) {
this.current_module = current_module;
}

public ArrayList<UserMenus> getUm_list() {
return um_list;
}

public void setUm_list(ArrayList<UserMenus> um_list) {
this.um_list = um_list;
}

public DefaultSubMenu parentItem(UserMenus user_menu_item) {
DefaultSubMenu uic = null;
ArrayList<DefaultSubMenu> all_components = new ArrayList<DefaultSubMenu>();
String search_string = null;
int i;

for (i = 0 ; i < this.um_list.size() && !(this.um_list.get(i).getMenu_id() == user_menu_item.getParent_menu_id()) ; i++)
;
if (i < this.um_list.size()) {

String menu_item_id_prefix = "Top_" + Integer.toString(um_list.get(i).getMenu_id()) + "_";
search_string = menu_item_id_prefix + um_list.get(i).getMenu_display_name().replace(" ", "_");
all_components.addAll((Collection<? extends DefaultSubMenu>) this.model.getElements());

for (int j = 0 ; j < all_components.size() ; j++) { // this were i'm getting error for the file (i.e., defaultsubmenu can't be cast to defaultmenuitem..).If any one have any idea about this .please help me

if (!search_string.equals(all_components.get(i).getId())) {
all_components.addAll((Collection<? extends DefaultSubMenu>) all_components.get(i).getElements());
} else {
System.out.println("hey 2");
System.out.println("false else in allcomponents");
}
System.out.println(i + " hey");

}
System.out.println(all_components.get(i).getLabel() + "------------------------");

System.out.println(all_components.size() + "--------hey");
System.out.println(search_string.equals(all_components.get(i).getId()) + "------------hey there");

if (i < all_components.size()) {
uic = all_components.get(i);
} else {
System.out.println("hey ");
}
}

return uic;
}
}
</code>
------------------------------------------------------
Last edited by senthilkumar.89 on 17 Mar 2014, 19:09, edited 1 time in total.
Regards
Senthil Kumar

Jsf 2.1,2.2, Primefaces 3.5, Primefaces 4.0,
Primefaces Mobile 0.9.5
Primefaces 5.0.RC1,Primefaces 5.2,Primefaces Extentsions 3.2.0.

User avatar
andyba
Expert Member
Posts: 2473
Joined: 31 Mar 2011, 16:27
Location: Steinfeld, near Bremen/Osnabrück, DE
Contact:

17 Mar 2014, 18:57

When you create a post there is a menu bar with things like B i u and so on.
Use the

Code: Select all

code
button to create code tags.
PF 4.x (Elite versions), PF 5, Pf 5.1, PF 6.0
Glassfish 4.1, Mojarra 2.x, Java 8, Payara 4.1.1.
If you haven't read the forum rules read them now

senthilkumar.89
Posts: 100
Joined: 29 Jan 2014, 03:41

17 Mar 2014, 19:10

andyba wrote:When you create a post there is a menu bar with things like B i u and so on.
Use the

Code: Select all

code
button to create code tags.
andyba wrote:You have been asked, politely, to read the forum rules and use code tags to format the code you post. I am asking you, again politely, to do so.
Using code tags is not us being fussy, it makes your code much easier for us to read. Without this you will find people, like me, won't be prepared to make much effort to help you.
yeah sir i have pasted the code used in the managed bean.it is the last second post i have posted.by the way what is code tags

here is the xhtml part
-------------------------------------------------------
<code>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core">

<h:form name="top_menu_form" styleClass="ui-form">
<p:menubar styleClass="uicolor" model="#{topMenuBean.model}">

</p:menubar>

</h:form>

</ui:composition>
</code>

------------------------------------------------------

here is the mangaed bean part
------------------------------------------------------
<code>
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.component.UIComponent;

import org.primefaces.component.menuitem.UIMenuItem;
import org.primefaces.model.menu.DefaultMenuItem;
import org.primefaces.model.menu.DefaultMenuModel;
import org.primefaces.model.menu.DefaultSubMenu;
import org.primefaces.model.menu.MenuColumn;
import org.primefaces.model.menu.MenuElement;
import org.primefaces.model.menu.MenuModel;

@ManagedBean(name = "topmenu1")
@RequestScoped
public class TopMenuBean1 {

private MenuModel model;
private String current_module = "No module chosen ...";
private ArrayList<UserMenus> um_list;

@SuppressWarnings("unchecked")
public TopMenuBean1() {

this.um_list = new ArrayList<UserMenus>();
this.um_list.addAll((ArrayList<UserMenus>) utils.execute_VE("#{loginBean.ua.user_menus}", ArrayList.class));
this.current_module = (String) utils.execute_VE("#{loginBean.ua.current_module}", String.class);
this.model = new DefaultMenuModel();
}

@PostConstruct
public void construct_top_menu() {
String menu_item_id_prefix;

String base_path = utils.get_base_path();

System.out.println("About to construct top menu and Base path is ---> " + base_path);

Collections.sort(this.um_list, new Comparator<UserMenus>() {
@Override
public int compare(UserMenus u1, UserMenus u2) {
return (u1.getMenu_id() * 100 + u1.getParent_menu_id()) - (u2.getMenu_id() * 100 + u2.getParent_menu_id());
}
});

UserMenus user_menu_item;
DefaultSubMenu submenu = null;
DefaultMenuItem dmf = null;
DefaultMenuItem dmf1 = null;
DefaultSubMenu dsm = null;
for (int i = 0 ; i < this.um_list.size() ; i++) {
System.out.println("hey");
user_menu_item = this.um_list.get(i);
menu_item_id_prefix = "Top_" + Integer.toString(user_menu_item.getMenu_id()) + "_";
System.out.println(hasChildren(user_menu_item) + "-----------------");
if (hasChildren(user_menu_item)) {
submenu = new DefaultSubMenu();
submenu.setLabel(user_menu_item.getMenu_display_name());
submenu.setId(menu_item_id_prefix + user_menu_item.getMenu_display_name().replace(' ', '_'));

DefaultSubMenu parent = this.parentItem(user_menu_item);

if (parent == null) {
this.model.addElement(submenu);
} else {
parent.getElements().add(submenu);
submenu.addElement(parent);
}

} else {
DefaultMenuItem item = new DefaultMenuItem();
item.setId(menu_item_id_prefix + user_menu_item.getMenu_display_name().replace(' ', '_'));
item.setValue(user_menu_item.getMenu_display_name());
item.setTitle(user_menu_item.getMenu_display_name());
item.setUrl(base_path + "/" + user_menu_item.getUrl() + "?mn=" + user_menu_item.getMenu_id());

DefaultSubMenu parent = this.parentItem(user_menu_item);

if (parent == null) {
this.model.addElement(item);
} else {
parent.getElements().add(item);
}
}

}

}

private Boolean hasChildren(UserMenus um) {
int i;
for (i = 0 ; i < this.um_list.size() && !(um_list.get(i).getParent_menu_id() == um.getMenu_id()) ; i++)
;
return (i < this.um_list.size());
}

public MenuModel getModel() {
return model;
}

public void setModel(MenuModel model) {
this.model = model;
}

public String getCurrent_module() {
return current_module;
}

public void setCurrent_module(String current_module) {
this.current_module = current_module;
}

public ArrayList<UserMenus> getUm_list() {
return um_list;
}

public void setUm_list(ArrayList<UserMenus> um_list) {
this.um_list = um_list;
}

public DefaultSubMenu parentItem(UserMenus user_menu_item) {
DefaultSubMenu uic = null;
ArrayList<DefaultSubMenu> all_components = new ArrayList<DefaultSubMenu>();
String search_string = null;
int i;

for (i = 0 ; i < this.um_list.size() && !(this.um_list.get(i).getMenu_id() == user_menu_item.getParent_menu_id()) ; i++)
;
if (i < this.um_list.size()) {

String menu_item_id_prefix = "Top_" + Integer.toString(um_list.get(i).getMenu_id()) + "_";
search_string = menu_item_id_prefix + um_list.get(i).getMenu_display_name().replace(" ", "_");
all_components.addAll((Collection<? extends DefaultSubMenu>) this.model.getElements());

for (int j = 0 ; j < all_components.size() ; j++) { // this were i'm getting error for the file (i.e., defaultsubmenu can't be cast to defaultmenuitem..).If any one have any idea about this .please help me

if (!search_string.equals(all_components.get(i).getId())) {
all_components.addAll((Collection<? extends DefaultSubMenu>) all_components.get(i).getElements());
} else {
System.out.println("hey 2");
System.out.println("false else in allcomponents");
}
System.out.println(i + " hey");

}
System.out.println(all_components.get(i).getLabel() + "------------------------");

System.out.println(all_components.size() + "--------hey");
System.out.println(search_string.equals(all_components.get(i).getId()) + "------------hey there");

if (i < all_components.size()) {
uic = all_components.get(i);
} else {
System.out.println("hey ");
}
}

return uic;
}
}
</code>
------------------------------------------------------

like this right
Regards
Senthil Kumar

Jsf 2.1,2.2, Primefaces 3.5, Primefaces 4.0,
Primefaces Mobile 0.9.5
Primefaces 5.0.RC1,Primefaces 5.2,Primefaces Extentsions 3.2.0.

kukeltje
Expert Member
Posts: 9605
Joined: 17 Jun 2010, 13:34
Location: Netherlands

18 Mar 2014, 19:16

No, not at all. And when in doubt, there is a PREVIEW button

senthilkumar.89
Posts: 100
Joined: 29 Jan 2014, 03:41

19 Mar 2014, 06:10

kukeltje wrote:No, not at all. And when in doubt, there is a PREVIEW button
yeah sir i have pasted the code used in the managed bean.it is the last second post i have posted.by the way what is code tags

here is the xhtml part
-------------------------------------------------------

Code: Select all

<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core">

<h:form name="top_menu_form" styleClass="ui-form">
<p:menubar styleClass="uicolor" model="#{topMenuBean.model}">

</p:menubar>

</h:form>

</ui:composition>
------------------------------------------------------

here is the mangaed bean part
------------------------------------------------------

Code: Select all



import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.component.UIComponent;

import org.primefaces.component.menu.Menu;
import org.primefaces.model.menu.DefaultMenuItem;
import org.primefaces.model.menu.DefaultMenuModel;
import org.primefaces.model.menu.DefaultSubMenu;
import org.primefaces.model.menu.MenuItem;
import org.primefaces.model.menu.MenuModel;
import org.primefaces.model.menu.Submenu;

@ManagedBean(name = "topMenuBean")
@RequestScoped
public class TopMenuBean {
	private MenuModel model;
	private ArrayList<UserMenus> uml;

	public TopMenuBean() {
		uml = new ArrayList<UserMenus>();
		uml.addAll((ArrayList<UserMenus>) utils.execute_VE("#{loginBean.ua.user_menus}", ArrayList.class));
		System.out.println("I am in top menu bean....");
		model = new DefaultMenuModel();

		System.out.println("ABout to exit constructor of side menu bean");
	}

	@PostConstruct
	public void construct_top_menu() {
		String menu_item_id_prefix;

		String base_path = utils.get_base_path();

		System.out.println("About to construct top menu and Base path is ---> " + base_path);

		Collections.sort(this.uml, new Comparator<UserMenus>() {
			@Override
			public int compare(UserMenus u1, UserMenus u2) {
				return (u1.getMenu_id() * 1000 + u1.getParent_menu_id()) - (u2.getMenu_id() * 1000 + u2.getParent_menu_id());
			}
		});

		UserMenus user_menu_item;
		DefaultSubMenu submenu = null;
		for (int i = 0 ; i < this.uml.size() ; i++) {
			user_menu_item = uml.get(i);
			System.out.println("working on: " + user_menu_item);

			// ---This is needed because multiple menu items can have the same
			// display names but their ids must be unique.
			menu_item_id_prefix = "Top_" + Integer.toString(user_menu_item.getMenu_id()) + "_";

			// ---See if this guy has a child. If so he ought to be a submenu
			// else a menu item.
			if (hasChildren(user_menu_item)) {
				submenu = new DefaultSubMenu();
				submenu.setLabel(user_menu_item.getMenu_display_name());

				submenu.setId(menu_item_id_prefix + user_menu_item.getMenu_display_name().replace(' ', '_'));

				Submenu parent = (Submenu) this.parentItem(user_menu_item);

				if (parent == null) {
					model.addElement(submenu);
					System.out.println("Adding submenu " + submenu.getId() + " to model");
				} else {
					parent.getElements().add(submenu);
					submenu.addElement(parent);

					System.out.println("Adding submenu " + submenu.getId() + " to " + parent.getId());
				}
			} else {
				DefaultMenuItem item = new DefaultMenuItem();
				item.setValue(user_menu_item.getMenu_display_name());

				item.setId(menu_item_id_prefix + user_menu_item.getMenu_display_name().replace(' ', '_'));

				item.setUrl(base_path + "/" + user_menu_item.getUrl() + "?mn=_" + user_menu_item.getMenu_id());

				Submenu parent = (Submenu) this.parentItem(user_menu_item);

				if (parent == null) {
					model.addElement(item);
					System.out.println("Adding item " + item.getId() + " to model");
				} else {
					parent.getElements().add(item);
					System.out.println("Adding item " + item.getId() + " to " + parent.getId());
				}
			}
		}
		System.out.println("Created top menu ...");
	}

	private Boolean hasChildren(UserMenus um) {
		int i;

		for (i = 0 ; i < this.uml.size() && !(uml.get(i).getParent_menu_id() == um.getMenu_id()) ; i++)
			;

		return (i < this.uml.size());
	}

	public DefaultSubMenu parentItem(UserMenus user_menu_item) {
		DefaultSubMenu uic = null;
		ArrayList<DefaultSubMenu> all_components = new ArrayList<DefaultSubMenu>();
		String search_string = null;
		int i;

		System.out.println("Incoming is " + user_menu_item.getMenu_display_name());

		// ---First find the display name of the parent menu item (of user menu
		// item). Note : It must be in the same module.
		for (i = 0 ; i < this.uml.size() && !(this.uml.get(i).getMenu_id() == user_menu_item.getParent_menu_id()) ; i++)
			;

		if (i < this.uml.size()) {
			System.out.println("So basically the parent is " + uml.get(i).getMenu_display_name());

			// ---Now construct the prefix of the item to search in the
			// collection of menu items (screen control).
			String menu_item_id_prefix = "Top_" + Integer.toString(uml.get(i).getMenu_id()) + "_";
			search_string = menu_item_id_prefix + uml.get(i).getMenu_display_name().replace(" ", "_");

			all_components.addAll((Collection<? extends DefaultSubMenu>) this.model.getElements());

			// for (i = 0 ; i < all_components.size() && !search_string.equals(all_components.get(i).getId()) ; i++) {
			// System.out.println(search_string + " vs " + all_components.get(i).getId());
			// if (all_components.get(i).getChildCount() > 0)
			// all_components.addAll(all_components.get(i).getElements());
			// }

			if (i < all_components.size()) {
				System.out.println("Got a match in " + all_components.get(i).getId());
				uic = all_components.get(i);
			} else
				System.out.println("No Match found");
		}
		return uic;
	}

	public MenuModel getModel() {
		return model;
	}

	public void setModel(MenuModel model) {
		this.model = model;
	}

	public ArrayList<UserMenus> getUml() {
		return uml;
	}

	public void setUml(ArrayList<UserMenus> uml) {
		this.uml = uml;
	}
}

------------------------------------------------------

like this right
Last edited by senthilkumar.89 on 19 Mar 2014, 09:35, edited 1 time in total.
Regards
Senthil Kumar

Jsf 2.1,2.2, Primefaces 3.5, Primefaces 4.0,
Primefaces Mobile 0.9.5
Primefaces 5.0.RC1,Primefaces 5.2,Primefaces Extentsions 3.2.0.

kukeltje
Expert Member
Posts: 9605
Joined: 17 Jun 2010, 13:34
Location: Netherlands

19 Mar 2014, 09:02

One step better, but all your indentation is gone. Please correct that

senthilkumar.89
Posts: 100
Joined: 29 Jan 2014, 03:41

19 Mar 2014, 09:36

kukeltje wrote:One step better, but all your indentation is gone. Please correct that
okay i have edited the code can some one help me with this menu it is bugging me
Regards
Senthil Kumar

Jsf 2.1,2.2, Primefaces 3.5, Primefaces 4.0,
Primefaces Mobile 0.9.5
Primefaces 5.0.RC1,Primefaces 5.2,Primefaces Extentsions 3.2.0.

rikhurana
Posts: 3
Joined: 04 Feb 2015, 17:58

30 Mar 2015, 15:37

Any joy? I too m receiving the same error.

senthilkumar.89
Posts: 100
Joined: 29 Jan 2014, 03:41

31 Mar 2015, 03:37

i Have created the menubar and it works fine only a glitch if it dont have parent it wont display the child menus
Regards
Senthil Kumar

Jsf 2.1,2.2, Primefaces 3.5, Primefaces 4.0,
Primefaces Mobile 0.9.5
Primefaces 5.0.RC1,Primefaces 5.2,Primefaces Extentsions 3.2.0.

rikhurana
Posts: 3
Joined: 04 Feb 2015, 17:58

31 Mar 2015, 07:08

Not sure I understand. Would you kindly paste your code here? I have to create a tieredMenu programmatically with submenus and items associated with them.

Thanks,
Richa

Post Reply

Return to “PrimeFaces”

  • Information
  • Who is online

    Users browsing this forum: kerem13 and 35 guests