Я не могу реализовать два представления для одного и того же докладчика, хотя выполняется только одна перестановка.Я использую GWTP, у меня есть gin ClientModule, который устанавливает LoginModule (здесь я связываю LoginPresenter с LoginView), я хочу другое представление для LoginPresenter на основе значения formfactor в URL.Поэтому для этого у меня есть другой модуль джина 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>
Я добавил эти строки в свое основное приложение.gwt.xml file
<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);