0

ドロップダウンの子を使用してメニューを設定しようとしています。メニュー項目の通常のテーブルと、JSPを介したレンダリングを容易にするために子項目が移動されるセット/配列/リスト(それぞれ試行)を作成しました。ただし、.add()を使用して子のリストに項目を追加しようとすると、java.lang.NullPointerExceptionが発生し、それ以上進みません。

私のシステムはSpring/Hibernateを使用してセットアップされており、これ以外はすべて機能します。

モデル(無関係なフィールドとゲッター/セッターを除く):

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ループが正しく構成されていませんでした。

モデル(無関係なフィールドとゲッター/セッターを除く):

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 に答える