我正在尝试设置一个带有下拉菜单的菜单。我已经创建了一个用于菜单项的常规表,以及一个set / array / list(尝试过每个),子项将被移动到其中,以便通过JSP更容易呈现。但是,当我尝试使用.add()将项添加到子列表中时,我收到一个java.lang.NullPointerException,它不再进一步。
我的系统是使用Spring / Hibernate设置的,除此之外一切正常。
模型(不包括不相关的字段和getter / setter):
public class Menu {
@Transient
private Set<Menu> pageChildren;
@Column(name = "pageParent")
private Integer pageParent;
@Column(name = "pageId")
private Integer pageId;
...
来自控制器的必要片段:
List<Menu> menuItems = new ArrayList<Menu>();
menuItems = menuService.getAll();
for (Menu item: menuItems) {
if (item.getPageType() == 1 && item.getPageParent() > 0) {
menuItems.get(item.getPageParent() - 1).getPageChildren().add(item);
menuItems.remove(item);
}
}
答案 0 :(得分:0)
瞬态变量需要初始化,并且for循环配置错误。
模型(不包括不相关的字段和getter / setter):
public class Menu {
@Transient
private Set<Menu> pageChildren = new HashSet<Menu>(); //CHANGED
@Column(name = "pageParent")
private Integer pageParent;
@Column(name = "pageId")
private Integer pageId;
...
来自控制器的必要片段:
List<Menu> menuItems = new ArrayList<Menu>();
menuItems = menuService.getAll();
for(int i=0; i<menuItems.size(); i++){ //CHANGED
Menu item = menuItems.get(i); //CHANGED
if (item.getPageType() == 1 && item.getPageParent() > 0) {
menuItems.get(item.getPageParent() - 1).getPageChildren().add(item);
menuItems.remove(item);
}
}