0

以下のコードではPlaceManager、4 行目にa を挿入placeManager.revealPlace()し、最後の行で the を使用しようとしています。ただし、その時点で null 例外が発生します。

さらに、その行の前に a を追加するif(placeManager==null){ Window.alert("Hello"); }と、アラートが表示されます。

なぜこれが起こっているのですか?おそらくFieldUpdaterハンドラー内で実行されるためでしょうか?

ありがとう

public class CellTableManager {

private final DialectiveRequestFactory requestFactory = GWT.create(DialectiveRequestFactory.class);
private EventBus eventBus;
@Inject PlaceManager placeManager;

public CellTableManager (final CellTable<Diagram> cellTable, SimplePager pager) {
    DiagramDatabase.get().getDiagramProvider().addDataDisplay(cellTable);
    ListHandler<Diagram> sortHandler = new ListHandler<Diagram>(
        DiagramDatabase.get().getDiagramProvider().getList());
    cellTable.addColumnSortHandler(sortHandler);
    this.eventBus = new SimpleEventBus();
    requestFactory.initialize(eventBus);
    SimplePager.Resources pagerResources = GWT.create(SimplePager.Resources.class);
    pager = new SimplePager(TextLocation.CENTER, pagerResources, false, 0, true);
    pager.setDisplay(cellTable);

    final SelectionModel<Diagram> selectionModel = initSelectionMode(cellTable);

    initTableColumns(cellTable, selectionModel, sortHandler);

    DiagramRequest diagramRequest = requestFactory.diagramRequest();
    diagramRequest.listAll().fire(new Receiver<List<DiagramProxy>>() {
        public void onSuccess(List<DiagramProxy> response) {
            for (int i=0;i<response.size();i++) {
                insertEmptyRow(cellTable, response.get(i));
            }
        }
    });
}

private void initTableColumns(final CellTable<Diagram> cellTable,
            final SelectionModel<Diagram> selectionModel, ListHandler<Diagram> sortHandler) {
        Column<Diagram, String> titleColumn = new Column<Diagram, String>(
            new TextCell()) {
          @Override
          public String getValue(Diagram object) {
            return object.getTitle();
          }
        };
        titleColumn.setSortable(true);
        sortHandler.setComparator(titleColumn, new Comparator<Diagram>() {
            @Override
            public int compare(Diagram o1, Diagram o2) {
                return o1.getTitle().compareTo(o2.getTitle());
            }
        });

        cellTable.addColumn(titleColumn, BasicConstants.editTableText[0]);
        cellTable.setColumnWidth(titleColumn, 20, Unit.PCT);

        Column<Diagram, String> descriptionColumn = new Column<Diagram, String>(
            new TextCell()) {
          @Override
          public String getValue(Diagram object) {
            return object.getDescription();
          }
        };

        descriptionColumn.setSortable(true);
        sortHandler.setComparator(descriptionColumn, new Comparator<Diagram>() {
            @Override
            public int compare(Diagram o1, Diagram o2) {
                return o1.getDescription().compareTo(o2.getDescription());
            }
        });

        cellTable.addColumn(descriptionColumn, BasicConstants.editTableText[1], "");
        cellTable.setColumnWidth(descriptionColumn, 50, Unit.PCT);

        Column<Diagram, String> editColumn = new Column<Diagram, String>(
                new ButtonCell()) {
              @Override
              public String getValue(Diagram object) {
                return "edit";
              }
            };

        cellTable.addColumn(editColumn, "");
        editColumn.setFieldUpdater(new FieldUpdater<Diagram, String>() {
              @Override
              public void update(int index, Diagram object, String value) {
                  String diagramCode = object.getDiagramId(); 
                  ClientState.setCurrentDiagramId(diagramCode);
                  PlaceRequest request = new PlaceRequest(NameTokens.e).with("id", diagramCode);
                  placeManager.revealPlace(request);
              }
        });
}
4

1 に答える 1

1

あなたはbind(...)あなたPlaceManagerの実装にあなたをしましたかClientModule(そして私たちは後者を見ることができますか?)

GinModules/をチェックして確認しましたGinjectorか(使用していると仮定してgin)?

乾杯、

于 2012-10-22T12:47:44.103 に答える