Ошибка: здесь нельзя использовать тип byte[]. (В прокси-классе фабрики запросов)

У меня есть проект maven + spring + gwt (2.4.0). Когда я запускаю mvn gwt:run, я получаю следующую ошибку:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project star: Compilation failure: Compilation failure:
[ERROR] C:\Users\radu_chilom\Eclipse Workspaces\Spring3\star\src\main\java\com\base\star\shared\proxies\customer\CDocumentProxy.java:[19,8] error: The type byte[] cannot be used here
[ERROR] C:\Users\radu_chilom\Eclipse Workspaces\Spring3\star\src\main\java\com\base\star\shared\proxies\customer\CDocumentProxy.java:[21,25] error: The type byte[] cannot be used here
[ERROR] C:\Users\radu_chilom\Eclipse Workspaces\Spring3\star\src\main\java\com\base\star\shared\proxies\dealer\DealerTargetAgreementProxy.java:[35,36] error: The type byte[] cannot be used here
[ERROR] C:\Users\radu_chilom\Eclipse Workspaces\Spring3\star\src\main\java\com\base\star\shared\proxies\dealer\DealerTargetAgreementProxy.java:[40,15] error: The type byte[] cannot be used here
[ERROR] C:\Users\radu_chilom\Eclipse Workspaces\Spring3\star\src\main\java\com\base\star\shared\services\dealer\TreeNodeTargetAgreementRequest.java:[29,33] error: Could not find domain method similar to java.util.List<com.base.star.server.dto.dealer.FileTextDTO> getTreeNodeTargetAgreementsList(java.lang.Long)

Мой CDocumpentProxy.java выглядит следующим образом:

@ProxyFor(value = com.base.star.server.domain.CDocument.class, locator=
com.base.star.server.locators.customer.CDocumentLocator.class)
public interface CDocumentProxy extends EntityProxy {

byte[] getDocument(); //line 19

void setDocument(byte[] document); //line 21

Если я создам проект с помощью STS 2.9.2, проект будет создан. Поэтому я думаю, что проблема в плохой конфигурации плагина maven-compiler.

В моем файле .pom я настроил maven-compiler-plugin, например:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>2.5.1</version>
  <configuration>
    <source>1.6</source>
    <target>1.6</target>
    <encoding>UTF-8</encoding>
  </configuration>
 </plugin>

Могу ли я использовать byte[] в качестве возвращаемого типа для метода в прокси-сервере фабрики запросов? Я просто не могу понять ошибку..


person Radu Chilom    schedule 27.07.2012    source источник


Ответы (1)


Вы не можете использовать массивы в Request Factory: https://developers.google.com/web-toolkit/doc/latest/DevGuideRequestFactory#transportable

При этом для эквивалента byte[] я бы предпочел использовать String, чем List<Byte>, а GWT эмулирует String#getBytes для кодировок UTF-8 и ISO-8859-1.

person Thomas Broyer    schedule 27.07.2012
comment
Ты прав. Спасибо. Итак, я изменил все массивы байтов на строку. Но у меня все еще есть 1 ошибка. Последний: [ОШИБКА] C:\Users\radu_chilom\Eclipse Workspaces\Spring3\star\src\main\java\com\base\star\shared\services\dealer\TreeNodeTargetAgreementRequest.java:[29,33] ошибка: Не удалось найти метод домена, аналогичный java.util.List getTreeNodeTargetAgreementsList(java.lang.Long) . - person Radu Chilom; 27.07.2012
comment
Что вы не понимаете? Возможно, ваш метод (в службе на стороне сервера) имеет другое имя, другие аргументы или тип возвращаемого значения, или, может быть, это не public. - person Thomas Broyer; 27.07.2012