连接gwt调度与guice和mvp4g
我有一些关于gwt调度和GUI的问题。我使用的是Guice 2.0、gwt dispatch 1.1.0 snapshot、mvp4g 1.1.0和GIN 1.0 首先,我定义了简单操作、结果和处理程序: ListContactsAction.java连接gwt调度与guice和mvp4g,gwt,inversion-of-control,gwt-gin,gwt-dispatch,gwt-mvp,Gwt,Inversion Of Control,Gwt Gin,Gwt Dispatch,Gwt Mvp,我有一些关于gwt调度和GUI的问题。我使用的是Guice 2.0、gwt dispatch 1.1.0 snapshot、mvp4g 1.1.0和GIN 1.0 首先,我定义了简单操作、结果和处理程序: ListContactsAction.java public class ListContactsAction implements Action<ListContactsResult>{ public ListContactsAction() { } } 我
public class ListContactsAction implements Action<ListContactsResult>{
public ListContactsAction() {
}
}
我在gwt dispatch getting started上读到,我必须在我的操作和它的处理程序之间提供绑定,看起来应该是这样的:
public class ContactModule extends ActionHandlerModule{
@Override
protected void configureHandlers() {
bindHandler(ListContactsAction.class, ListContactsHandler.class);
}
}
但我在使用Guice连接所有这些方面都有问题,因为gwt调度站点的这个示例:
public class DispatchServletModule extends ServletModule {
@Override
public void configureServlets() {
serve( "/path/to/dispatch" ).with( DispatchServiceServlet.class );
}
}
不工作,因为包中没有DispatchServiceServlet
我的问题是:
- 我应该如何编写DispatchServletModule以及如何使其运行(使用我应该提供的路径)
- 我应该在我的应用程序的web.xml文件中放入什么才能正确执行演示者的操作,演示者已经执行了
实现DispatcherAsync
- 我应该把我的
提供方法(在哪个模块中)放在哪里,以便能够将SqlSessionFactory注入我需要的地方SqlSessionFactory
- 如何实例化注入器,以便在其他操作处理程序中正确使用它
我想就这些,我说得很清楚。如果有些地方不够清楚,我会尽量说得更具体。您创建了GuiceServletConfig类吗?在这里,您可以使用Guice设置Dispatch servlet模块以及操作处理程序模块
plubic class GuiceServletConfig extends GuiceServletContextListener {
@Override
protected Injector getInjector() {
return Guice.createInjector(new HandlerModule(), new DispatchServletModule());
}
}
HandlerModule是ActionHandler模块类,因此您可以从代码中放入ContactModule类
public class MyClientModule extends AbstractGinModule {
@Override protected void configure() {
bind(...).to(...);
...
}
}
对于SqlSessionFactory,您可以在ContactModule中为其设置绑定,使用我的代码,我只有一个ServerModule来设置所有服务和操作处理程序绑定。这主要是为了简单。您是否创建了GuiceServletConfig类?在这里,您可以使用Guice设置Dispatch servlet模块以及操作处理程序模块
plubic class GuiceServletConfig extends GuiceServletContextListener {
@Override
protected Injector getInjector() {
return Guice.createInjector(new HandlerModule(), new DispatchServletModule());
}
}
HandlerModule是ActionHandler模块类,因此您可以从代码中放入ContactModule类
public class MyClientModule extends AbstractGinModule {
@Override protected void configure() {
bind(...).to(...);
...
}
}
对于SqlSessionFactory,您可以在ContactModule中为其设置绑定,使用我的代码,我只有一个ServerModule来设置所有服务和操作处理程序绑定。这主要是为了简单。GWT平台框架使用GWT调度叉来处理rpc请求。如果您认真考虑使用dispatcher和Guice,可能需要自己编写很多代码。我强烈推荐它。GWT平台框架使用GWT调度叉来处理rpc请求。如果您认真考虑使用dispatcher和Guice,可能需要自己编写很多代码。我强烈推荐。首先,我表示同情。把这一切放在一起,在任何一个地方都没有记录。我会依次回答你的每个问题。如果有任何不清楚的地方,请在我的回答中添加评论 QU:我应该如何编写DispatchServletModule以及如何使其运行(使用我应该提供的路径) net.customware.gwt.dispatch.server.guice包中有一个GuiceStandardDispatchServlet类;用那个。我不能百分之百确定原因,但我使用的路径包括我的GWT模块的名称,后跟“/dispatch”。你可能得试一下
public class MyServletModule extends ServletModule {
@Override protected void configureServlets() {
serve("/com.my.module.name/dispatch")
.with(GuiceStandardDispatchServlet.class);
}
}
QU:我应该在我的应用程序的web.xml文件中添加什么才能正确执行演示者的操作,演示者已经注入了DispatcherAsync实现
QU:我应该把我的SqlSessionFactory提供方法放在哪里(在哪个模块中)才能在需要的地方注入SqlSessionFactory
注意,我在前面的代码片段中包含了一个新的SQLStuffModule;这将是放置SqlSessionFactory绑定的好地方。拥有多个模块没有什么害处,我发现它可以很好地将各种关注点分开
问:我如何实例化注入器,以便在其他操作处理程序中正确使用它
对于服务器端,请参阅上面的MyContextListener代码片段
在客户端,您需要一个定制的注入器接口,如下所示:
@Provides
public SqlSessionFactory getSqlSessionFactory(){
// some code here
}
@GinModules(StandardDispatchModule.class, MyClientModule.class)
public interface MyGinjector extends Ginjector {
MyWidgetMainPanel getMainPanel();
}
…您可以将MVP内容绑定到自定义Gin模块中,如下所示。很抱歉,我不熟悉mvp4g,但我假设您需要在模块类中将视图和演示者连接在一起
public class MyClientModule extends AbstractGinModule {
@Override protected void configure() {
bind(...).to(...);
...
}
}
首先,我表示同情。把这一切放在一起,在任何一个地方都没有记录。我会依次回答你的每个问题。如果有任何不清楚的地方,请在我的回答中添加评论 QU:我应该如何编写DispatchServletModule以及如何使其运行(使用我应该提供的路径) net.customware.gwt.dispatch.server.guice包中有一个GuiceStandardDispatchServlet类;用那个。我不能百分之百确定原因,但我使用的路径包括我的GWT模块的名称,后跟“/dispatch”。你可能得试一下
public class MyServletModule extends ServletModule {
@Override protected void configureServlets() {
serve("/com.my.module.name/dispatch")
.with(GuiceStandardDispatchServlet.class);
}
}
QU:我应该在我的应用程序的web.xml文件中添加什么才能正确执行演示者的操作,演示者已经注入了DispatcherAsync实现
QU:我应该把我的SqlSessionFactory提供方法放在哪里(在哪个模块中)才能在需要的地方注入SqlSessionFactory
注意,我在前面的代码片段中包含了一个新的SQLStuffModule;这将是放置SqlSessionFactory绑定的好地方。拥有多个模块没有什么害处,我发现它可以很好地将各种关注点分开
问:我如何实例化注入器,以便在其他操作处理程序中正确使用它
对于服务器端,请参阅上面的MyContextListener代码片段
在客户端,您需要一个定制的注入器接口,如下所示:
@Provides
public SqlSessionFactory getSqlSessionFactory(){
// some code here
}
@GinModules(StandardDispatchModule.class, MyClientModule.class)
public interface MyGinjector extends Ginjector {
MyWidgetMainPanel getMainPanel();
}
…您可以将MVP内容绑定到自定义Gin模块中,如下所示。很抱歉,我不熟悉mvp4g,但我假设您需要在模块类中将视图和演示者连接在一起
public class MyClientModule extends AbstractGinModule {
@Override protected void configure() {
bind(...).to(...);
...
}
}
看起来像se