2015-12-01 3 views
0

у меня есть модель со структурой родитель-потомок , когда я установить родительскую модель следующее исключение встречается,:Resty-GWT слишком много исключений рекурсии в структуре родитель-потомок

com.google.gwt.core.client.JavaScriptException: (InternalError) : too much recursion 
at com.google.gwt.lang.Exceptions.wrap(Exceptions.java:36) 

я проследили сгенерированный класс Java для моего Модель , когда toJson назвал ее, пытается вызвать toJson для родительского объекта и в toJson родительского свойства пытается вызвать toJson списка детей и после некоторых вызовов слишком много рекурсии.

как я могу это решить? Есть ли какая-нибудь аннотация для этого?

ответ

1

Возможно, вы должны аннотировать метод toJson с помощью @JsonIgnore или сделать его временным. При попытке сериализации объектов он получает круговую ссылку.

Вы можете преобразовать объект в json, используя поддержку JsonEncoder/Decoder в resty. Вы, вероятно, захотите перенести эту функциональность из своего сущностного компонента и в другой класс, или вам придется аннотировать его с помощью @JsonIgnore или сделать метод преходящи.

https://resty-gwt.github.io/documentation/restygwt-user-guide.html

См JSON кодер/декодеры

+0

я не хочу, чтобы игнор это свойство он работает с gwittir, а также работает с RequestFacroty как они справляются с такого рода проблем? –

+0

Действительно ли ваш метод проходит и анализирует объект, чтобы преобразовать его в объект json? Как вы преобразовываете его в json в методе toJson? Образец кода объекта и пример метода toJson будут очень полезны. Я думаю, что вы можете сохранить функциональность, но вам нужно вывести ее из сущности. Если вам не нужно отправлять весь объект в json, содержащий поле, которое также помещает json, тогда вы должны перенести функциональность toJson из объекта. Затем используйте кодек, чтобы преобразовать его в json, а затем использовать его для gwittr. Если у вас есть @JsonIgnore или переходный режим, он просто не отправит –

+0

сущность через провод. Если метод фактически создает json динамически, то вы хотите использовать переходный или jsonIgnore. Метод toJson будет работать как ожидалось, но поле не будет сериализовано при отправке метода на сервер. Вероятно, вы все равно сможете вызвать метод и получить String json или JsonObject из метода toJson. –