GWTP:无法使用格式因子延迟绑定为同一演示者实现两个视图

时间:2018-12-16 13:44:07

标签: mvp gwtp gin

我无法为同一个演示者实现两个视图,而仅编译一个排列。我正在使用GWTP,我有一个用于安装LoginModule的gin ClientModule(这里我将LoginPresenter与LoginView绑定),我希望基于URL中的formfactor值为LoginPresenter提供不同的视图。 因此,为此,我还有另一个杜松子酒模块NewClientModule,它安装了NewLoginModule(在这里,我将LoginPresenter与NewLoginView绑定在一起)。 因此,我想使用延迟绑定将ClientModule替换为NewClientModule,但无法正常工作。

这是FormFactor.gwt.xml文件:

<?xml version="1.0" encoding="UTF-8"?>

<!-- Defines the formfactor property and its provider function. -->
<module>

<!-- Determine view1 or view2. -->
<define-property name="formfactor" values="view1,view2"/>

<property-provider name="formfactor">
<![CDATA[
// Look for the formfactor as a url argument.
var args = location.search;
var start = args.indexOf("formfactor");
if (start >= 0) {
var value = args.substring(start);
var begin = value.indexOf("=") + 1;
var end = value.indexOf("&");
if (end == -1) {
end = value.length;
}
return value.substring(begin, end);
}
  // Everything else is a view1.
  return "view1";
]]>
</property-provider>

</module>

我已经在主Application.gwt.xml文件中添加了这些行

<inherits name="com.gwtplatform.mvp.MvpWithFormFactor"/>
<inherits name='com.sample.application.FormFactor'/>

<set-configuration-property name="gin.ginjector.module.view2"
 value="com.sample.application.client.gin.NewClientModule"/>

<set-configuration-property name="gin.ginjector.modules"
value="com.sample.application.client.gin.ClientModule" />

<replace-with class="com.sample.application.client.gin.NewClientModule">
<when-type-is class="com.sample.application.client.gin.ClientModule"/>
<when-property-is name="formfactor" value="view2"/>
</replace-with>

我的ClientModule安装

(new LoginModule()); 

和NewClientModule安装

(new NewLoginModule());

我的LoginModule确实将LoginPresenter与LoginView绑定了:

bindPresenter(LoginPresenter.class, LoginPresenter.MyView.class, LoginView.class,LoginPresenter.MyProxy.class);

我的NewLoginModule确实将LoginPresenter与NewLoginView绑定

bindPresenter(LoginPresenter.class, LoginPresenter.MyView.class, NewLoginView.class,LoginPresenter.MyProxy.class);

0 个答案:

没有答案