@singleton在gwt中的用法

时间:2013-09-04 05:33:12

标签: gwt singleton

我有一个 PanelDataHandler 对象,就像

 @Singleton
 public class PanelDataHandler {
    private List<Panel> panelDetails;
    private  Integer nextId;
    @Inject
    public PanelDataHandler(){
        panelDetails = new ArrayList<Panel>();
        nextId = 0;

    }     
...
}

现在我的代码中有两个带有不同处理程序的按钮。按钮是保存保存的面板的详细信息,另一个是显示输入的面板的列表
我经历了很多帖子,而stackoverflow问题无法解决问题 我想创建一个PanelDataHandler pdh的实例,并在一个处理程序中添加面板,并在另一个处理程序中获取添加的面板列表。

public class PanelSaveEventHandler implements EventHandler {

    public void savePanelsList() {
       pdh.addPanels();

    }

}

获取列表

public class PanelClickEventHandler implements EventHandler{
    public void displayPanelGrid() {

        MyPagingDataGrid<Panel> grid = new MyPagingDataGrid<Panel>();
        grid.setHeight("500px");
        grid.setDataList(pdh.getPanelList());
        RootPanel.get().add(grid);

    }

}

我的Ginjector界面

@GinModules({ DispatchAsyncModule.class, ClientModule.class })
public interface ClientGinjector extends Ginjector {
...
...

    AsyncProvider<PanelDataHandler> getPanelDataHandler();
}

我的EntryPoint是

public class PanelEstimator implements EntryPoint {

    private final ClientGinjector ginjector = GWT.create(ClientGinjector.class);
    @Override
    public void onModuleLoad() {
        // This is required for Gwt-Platform proxy's generator
        DelayedBindRegistry.bind(ginjector);    
        ginjector.getPlaceManager().revealCurrentPlace();
        System.out.println(ginjector.getPanelDataHandler());
    }

}

我在哪里以及如何为PanelDataHandler创建实例,以便可以按上述方式使用

提前感谢您的答案

1 个答案:

答案 0 :(得分:1)

最后得到了我的问题的解决方案,感谢宝贵的建议 对于使用单个对象,必须注入,即

@注入
PanelDataHandler pdh;

它不是

PanelDataHandler pdh = new PanelDataHandler();