2012-10-22 2 views
0

아래 코드에서 4 번째 줄에 PlaceManager을 삽입하고 마지막 줄에 placeManager.revealPlace()을 사용하려고합니다. 그러나 그 순간 null 예외가 발생합니다.GWT : 삽입 된 PlaceManager가 null입니다.

또한 해당 행 앞에 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); 
       } 
     }); 
} 
+3

어떻게 'CellTableManager'를 만드십니까? 니가 '새'라고 부르지 않는 거지? –

답변

2

ClientModule 당신에게 구현에 bind(...) 당신의 PlaceManager나요 (우리는 후자를 볼 수 있습니까?)

당신이 확인하고 확인 되세요 당신/ Ginjector GinModules (당신이있어 가정 gin을 사용 하시겠습니까?)

건배,

관련 문제