Как я могу поделиться классом между кодом клиента GWT и кодом сервера?

Можно ли "разделить" класс Java между кодом клиента GWT и кодом сервера?

У меня есть простой класс, который просто содержит несколько Strings и несколько List<String>. Я хотел бы иметь возможность использовать этот класс как на стороне клиента, так и на стороне сервера только для некоторой последовательности.

Чтобы дать некоторый фон, класс, который я пытаюсь использовать, представляет собой контейнер для сообщения об ошибке с дополнительной информацией. В моем приложении есть некоторые ошибки, которые предотвращают сохранение, поэтому мы выполняем эти проверки на стороне клиента (перед сохранением). Затем после сохранения мы выполняем проверку "проверки" на сохраненном объекте на стороне сервера.

Я понимаю, что его нужно будет "скомпилировать" дважды, один раз для компиляции GWT и один раз для обычного компилятора javac, но похоже, что это должно быть возможно.

Есть ли способ настроить мой проект GWT для этого?

Ответы

Ответ 1

Одной из причин использования GWT является наличие модели единого домена для клиента и сервера.

Общепринятой практикой является использование общих классов между кодом сервера и клиентской стороной.

Обычно проект с исходным кодом клиента GWT разбивается на три пакета

com.yourpackage
               -shared
               -client
               -server

где shared пакет компилируется как java-байтовый код, так и javascript, client в javascript, а логика на стороне сервера помещается в пакет server.

Путь компиляции для клиента можно настроить в файле *.gwt.xml.