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);
}
});
}
어떻게 'CellTableManager'를 만드십니까? 니가 '새'라고 부르지 않는 거지? –