Невозможно объединить GIN и пользовательский валидатор bean в приложении GWT (ошибка компилятора) - PullRequest
2 голосов
/ 20 марта 2012

Не могли бы вы, ребята, помочь мне выйти замуж за GIN и специальный валидатор bean-компонентов в приложении GWT (GWT 2.4)?

GWT-компилятор выдает мне следующие ошибки:

Rebind result 'javax.validation.ValidatorFactory' must be a class
Rebind result 'com.google.gwt.validation.client.ProviderValidationMessageResolver' must be a class

Мой модуль GIN выглядит следующим образом

@GinModules(ClientGinModule.class)
public interface ClientGinjector extends Ginjector
{
    NewOrderView getOrderView();
}

Где NewOrderView просто расширяется Composite.

В моем .gwt.xml моего модуля у меня есть следующие инструкции

<replace-with class="com.mine.courierApp.client.validation.ClientValidatorFactory">
    <when-type-is class="javax.validation.ValidatorFactory"/>
</replace-with>
<replace-with class="com.mine.courierApp.client.validation.ClientValidationMessagesResolver">
    <when-type-is class="com.google.gwt.validation.client.UserValidationMessagesResolver"/>
</replace-with>

Так что я подумал, что возможноGIN хочет знать это в коде Java, поэтому я изменил свой модуль GIN, который стал

public class ClientGinModule extends AbstractGinModule
{
    protected void configure()
    {
        bind(javax.validation.ValidatorFactory.class).to(ClientValidatorFactory.class);
        bind(com.google.gwt.validation.client.UserValidationMessagesResolver.class).to(ClientValidationMessagesResolver.class);
    }
}

Но это не помогло, хотя сообщение об ошибке стало больше:

Rebind result 'javax.validation.ValidatorFactory' must be a class
Rebind result 'javax.validation.ValidatorFactory' must be a class
Cannot proceed due to previous errors
Rebind result 'com.google.gwt.validation.client.ProviderValidationMessageResolver' must be a class

Обновление: подробный GWTвывод компилятора:

   [ERROR] Errors in 'jar:file:/C:/work/externals/gwt/gwt-user.jar!/com/google/gwt/validation/client/BaseMessageInterpolator.java'
      [ERROR] Line 96:  Rebind result 'com.google.gwt.validation.client.ProviderValidationMessageResolver' must be a class
   [ERROR] Errors in 'jar:file:/C:/work/externals/gwt/gwt-user.jar!/com/google/gwt/validation/client/GwtValidatorContext.java'
      [ERROR] Line 36:  Rebind result 'javax.validation.ValidatorFactory' must be a class
   [ERROR] Errors in 'jar:file:/C:/work/externals/gwt/gwt-user.jar!/com/google/gwt/validation/client/spi/GwtValidationProvider.java'
      [ERROR] Line 39:  Rebind result 'javax.validation.ValidatorFactory' must be a class
   [ERROR] Cannot proceed due to previous errors

Что мне делать?

1 Ответ

2 голосов
/ 22 марта 2012

Оказалось, я должен определить

<replace-with class="com.mine.courierApp.client.validation.ClientValidatorFactory">
    <when-type-is class="javax.validation.ValidatorFactory"/>
</replace-with>
<replace-with class="com.mine.courierApp.client.validation.ClientValidationMessagesResolver">
    <when-type-is class="com.google.gwt.validation.client.UserValidationMessagesResolver"/>
</replace-with>

во всех модулях gwt, даже в тех, которые вообще не используют проверку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...