@gwt使用中的单例
我有一个对象PanelDataHandler,它类似于@gwt使用中的单例,gwt,singleton,Gwt,Singleton,我有一个对象PanelDataHandler,它类似于 @Singleton 公共类PanelDataHandler{ 私人名单详细信息; 私有整数nextId; @注入 公共PanelDataHandler(){ panelDetails=新的ArrayList(); nextId=0; } ... } 现在,在我的代码中有两个具有不同处理程序的按钮。on按钮用于保存已保存面板的详细信息,另一个按钮用于显示已输入面板的列表。 我已经浏览了很多帖子,但这个问题无法找到解决方案。 我想
@Singleton
公共类PanelDataHandler{
私人名单详细信息;
私有整数nextId;
@注入
公共PanelDataHandler(){
panelDetails=新的ArrayList();
nextId=0;
}
...
}
现在,在我的代码中有两个具有不同处理程序的按钮。on按钮用于保存已保存面板的详细信息,另一个按钮用于显示已输入面板的列表。我已经浏览了很多帖子,但这个问题无法找到解决方案。
我想创建一个
PanelDataHandler pdh
的实例,并在一个处理程序中将面板添加到该实例中,然后在另一个处理程序中获取添加的面板列表
公共类PanelSaveEventHandler实现EventHandler{
public void savePanelsList(){
pdh.addPanels();
}
}
获取列表
公共类面板ClickEventHandler实现EventHandler{
public void displayPanelGrid(){
MyPagingDataGrid=新建MyPagingDataGrid();
网格设置高度(“500px”);
setDataList(pdh.getPanelList());
RootPanel.get().add(网格);
}
}
我的Ginject接口
@GinModules({ DispatchAsyncModule.class, ClientModule.class })
public interface ClientGinjector extends Ginjector {
...
...
AsyncProvider<PanelDataHandler> getPanelDataHandler();
}
我可以在何处以及如何为PanelDataHandler
创建实例,以便如上所述使用它
提前感谢您的回答终于为我的问题找到了解决方案,感谢您的宝贵建议
对于使用单例对象,必须将其注入,即 @注入
PanelDataHandler-pdh 事实并非如此
PanelDataHandler pdh=新的PanelDataHandler() 终于解决了我的问题,谢谢你的宝贵建议
对于使用单例对象,必须将其注入,即 @注入
PanelDataHandler-pdh 事实并非如此
PanelDataHandler pdh=新的PanelDataHandler() 你在使用
GWTP
?我不明白这个问题。如果你使用一个GinInjector并将PanelDataHandler作为Singleton使用,那么如果你在代码中需要它们的地方@Injection它们,你应该总是得到相同的pdh实例。我不明白答案,如何在需要的地方@Injection。你的意思是当我为PanelDataHandler创建实例时,它将指向同一个pdh吗。我已经添加了Ginjector和EntryPoint的代码以获取详细信息您是否使用了GWTP
?我不理解这个问题。如果您使用一个GinInjector并使用PanelDataHandler作为Singleton,那么如果您在代码中需要它们的地方@Injector它们,您应该始终获得相同的pdh实例。我不理解答案,如何在我需要的地方注射。你的意思是当我为PanelDataHandler创建实例时,它将指向同一个pdh吗。我添加了Ginjector和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());
}
}