我无法为同一个演示者实现两个视图,而仅编译一个排列。我正在使用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);