![]() |
Не получается корректно сериализовать объект
Доброго времени суток :).
Стоит задача: сохранить объект - экземпляр класса, а потом восстановить его. Все это с помощью SharedObject. Вот класс объекта, который пытаюсь сохранить: Код:
package modelКод:
packageКогда идет попытка восстановить объект, плеер выкидывает ошибку с тем, что ожидалось 2 параметра в конструкторе класса Person, а получено 0. Получается что при восстановлении флеш вызывает конструктор класса без параметров... Я пробовал исключить параметры из конструктора и перенести инициализацию в отдельный метод. В результате после восстановления я получаю объект нужного класса, но с пустыми значениями полей.. Подскажите, пожалуйста, как все-таки можно восстановить объект? |
По поводу сохранения экземпляра своего класса:
Цитата:
зы: сделайте get метод, который вам вернет Object из вашего класса и пишите объект. С ними нет проблем. |
да, объектом можно это сделать, но, ИМХО, предпологалось что и кастомные классы можно сохранять (или пересылать по сети)..
|
If a class does not implement, nor inherits from a class which implements, the IExternalizable interface, then an instance of the class will be serialized using the default mechanism of public members only. As a result, private, internal, and protected members of a class will not be available.
To serialize private members, a class must use the IExternalizable interface. |
Можно сохранять. Но подводных камней там куча. Я не так давно делал сохранение кастомных объектов на сервере. Итак
- все классы объектов, которые ты хочешь сохранять должны реализовывать интерфейс IExternalizable ... Но это еще не все. - если у тебя в востанавливаемом объекте есть объекты других классов и перед востановлением ты закрываешь свф-ку (тоесть востановление происходит не сразу после сохранения) обязательно (!!!) надо перед востановлением сделать экземпляры всех этих объектов. Потому что флеш весьма странно работает. Если ты пытаешся востановить объект какого-то класса, а ни одного экземпляра этого класса не использовалось еще до этого, то вылетает ошибка. Это относится только к пользовательским классам. В хелпе нигде об этом ничего не сказано, и ошибка показывается весьма непонятная. У меня ушла неделя, на то, чтоб разобраться что к чему в этом вопросе. |
Спасибо, буду пробовать.. Камней подводных куча, конешн))) Вчера вот разбирался с ExternalInterface и почему он в ие не работает на одной странице. Оказалось что объект находился в форме, а так низзя =).. Хотя в хэлпе не сказано.
|
Вложений: 1
Вложение 19366
Фикс для форм. Не мое, там вроде внутри написано, кто автор =) ЗЫ. Если форма не результат деятельности АСП (т.е. не оборачивает всю страницу и валидность не важна - можно просто в форму с флешкой вставить еще 1 пустой тег <form> - тоже будет работать =) |
Зачем ExternalInterface. Ты же собирался сохранять в SharedObject.
Badun тебе всё очень чётко ответил. За более подробной информацией обращайся к документации по интерфейсу IExternalizable Там в конце даже пример есть. Почти такой как тебе надо. Если ты не собираешься заморачиваться с этим, то обрати особое внимание на то, что ты можешь сеарилизовать только паблик поля. Цитата:
|
| Часовой пояс GMT +4, время: 09:40. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.