2011-07-29 39 views
5

Tôi đang phát triển ứng dụng ngoại tuyến GWT bằng cách sử dụng Bộ nhớ cục bộ HTML5. Tôi muốn lưu trữ/lưu trữ các đối tượng chuyển giao bằng cách sử dụng com.google.gwt.storage.client.Storage (được giới thiệu trong phiên bản 2.3). Nhưng vấn đề là hiện tại (phiên bản 2.3) Storage chỉ có thể lưu các giá trị chuỗi.Sử dụng cơ chế tuần tự hóa/deserialization RPC được xây dựng trong GWT

Có khả năng nào để sử dụng cơ chế xê-ri hóa/giải mã rpc được tích hợp sẵn của GWT từ mã phía máy khách không? Vì vậy, tôi sẽ có thể serialize các đối tượng chuyển và lưu trữ chúng trong Local Storage và lấy chúng khi cần thiết và deserialize nội dung.

Trả lời

1

GWT Docs có điều này để nói:

Local Storage là String lưu trữ

nhớ cục bộ HTML5 lưu dữ liệu trong dạng chuỗi như cặp khóa-giá trị. Nếu dữ liệu bạn muốn lưu không phải là dữ liệu chuỗi , bạn có trách nhiệm chuyển đổi thành và từ chuỗi khi sử dụng LocalStorage. Đối với các lớp proxy được sử dụng với GWT RequestFactory, bạn có thể sử dụng RequestFactory # getSerializer() để làm tuần tự chuỗi. Đối với các đối tượng không phải proxy, bạn có thể sử dụng JSON xâu chuỗi và phân tích cú pháp.


EDIT:

RequestFactory#getSerializer() trả về một thực hiện ProxySerializer. Nhưng

ProxySerializer Làm tuần tự hóa biểu đồ của đối tượng EntityProxy. Một ProxySerializer được liên kết với một thể hiện của một ProxyStore khi nó được tạo ra thông qua RequestFactory.getSerializer (ProxyStore).

Vì vậy, bạn không thể sử dụng nó để sắp xếp các đối tượng tùy ý. Chỉ có EntityProxy đối tượng mới có thể được sắp xếp theo cách này. Tài liệu GWT không đề cập đến bất kỳ phương pháp nào để thực hiện tuần tự hóa như vậy cho các đối tượng không phải là EntityProxy, vì vậy tôi nghĩ rằng an toàn để giả định rằng không có giải pháp sẵn sàng để thực hiện việc này cho đến thời điểm này. Đối với các đối tượng không phải là EntityProxy, tài liệu GWT (được trích dẫn ở trên) khuyên bạn nên sử dụng tuần tự hóa JSON.

+0

Tôi muốn sử dụng phương thức thư viện của GWT để sắp xếp/deserialize đối tượng, chứ không phải JSON. Bạn có thể đưa ra một ví dụ về cách thực hiện nó bằng cách sử dụng RequestFactory # getSerializer()? – AKFA

+0

xem câu trả lời được cập nhật ở trên –

Các vấn đề liên quan