GWT RPC и постоянные объекты Java - PullRequest
3 голосов
/ 08 октября 2010

Прежде всего

большое спасибо Крейгу за отличный ответ, который я нашел очень полезным при поиске моей оригинальной проблемы ... ref: GWT Простая проблема варианта использования RPC: включенный код

Основываясь на этом решении, как можно преодолеть (казалось бы, ограничение GWT), где, если я оставлю свой постоянный объект в папке / shared , как предлагает Крэйг ... и аннотирует это как подсказывают учебники GWT ...

@PersistenceCapable
public class Employee {

@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key key;

GWT, по-видимому, не может обработать / импортировать com.google.appengine.datastore.key на стороне клиента?

Я видел несколько уродливых хаков ... но ничего изящного.

Любые предложения приветствуются, Спасибо

Ответы [ 4 ]

3 голосов
/ 08 октября 2010

К сожалению, класс Key App Engine (и другие) не GWT-совместим.Это означает, что вам нужно извлечь объект из хранилища данных, а затем преобразовать его в GWT-совместимый POJO для отправки клиенту через GWT-RPC.

Я предлагаю изучить использование objectify рамки для App Engine.Это не только намного более простой интерфейс в хранилище данных, но и постоянные объекты, которые он использует , GWT-совместимы, поэтому вы можете отправлять их через GWT-RPC своему клиенту.

2 голосов
/ 08 октября 2010

Вы можете использовать класс Key в коде GWT, добавив следующие дополнительные файлы jar:

http://www.resmarksystems.com/code/

  • appengine-utils-client-1.0.jar
  • appengine-utils-server-1.0.jar

Это в основном дает GWT-компилятору GWT-дружественную версию Key и других классов AppEngine.(например, Text, Blob и User ..)

Для использования:

  • Добавьте appengine-utils-client-1.0.jar в любом месте вашего пути сборки.
  • Поместите appengine-utils-server-1.0.jar в папку WEB-INF / lib.

В своем модуле GWT добавьте следующее:

<inherits name="com.resmarksystems.AppEngineDataTypes"/>
0 голосов
/ 19 декабря 2010

Я думаю, что Google только что выпустил библиотеку GWT под названием requestfactory для этого варианта использования. Это ссылка

0 голосов
/ 09 октября 2010

Если вам не нужен объект Key для чего-то, ваш ключ может быть Long или String, которые легко сериализуются и, следовательно, работают со стандартным GWT-RPC.

Ключи хранилища данных

...