0

我正在尝试设置带有下拉儿童的菜单。我为菜单项创建了一个常规表,以及一个集合/数组/列表(每个都尝试过),子项将被移动到其中以便更容易通过 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);
  }
}
4

1 回答 1

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);
  }
}
于 2013-02-01T12:04:11.407 回答