Java GWT对象序列化
我试图从mysql数据库返回arrayList以用于GWT cellList,但遇到了序列化问题 类型“com.cbs.ioma.client.Order”未包含在 可由此SerializationPolicy或其类序列化的类型 无法加载对象。出于安全目的,此类型不会 要序列化:instance=Order[orderNumber=1001,Order=test, 汇编程序=1,完成日期=1969-12-31,提交日期=1969-12-31, notes=rer,isComplete=false,type=erer] 我有一个课堂指令,但当我尝试将其更改为Java GWT对象序列化,java,mysql,gwt,serializable,Java,Mysql,Gwt,Serializable,我试图从mysql数据库返回arrayList以用于GWT cellList,但遇到了序列化问题 类型“com.cbs.ioma.client.Order”未包含在 可由此SerializationPolicy或其类序列化的类型 无法加载对象。出于安全目的,此类型不会 要序列化:instance=Order[orderNumber=1001,Order=test, 汇编程序=1,完成日期=1969-12-31,提交日期=1969-12-31, notes=rer,isComplete=false
公共类顺序实现java.io.Serializable
程序崩溃,不显示错误消息。我对GWT内部的序列化了解不多,所以如何序列化一个类以在GWT中使用呢?我相信在service和serviceAync类中有正确的函数名。谢谢
编辑:我将在这里添加更多内容。我尝试更改order类以实现isSerializable,然后出现此错误
12:55:49.793[错误][ioma]未捕获异常已转义
java.lang.ClassCastException:com.cbs.ioma.client.Order无法强制转换
到java.lang.String
在com.google.gwt.text.shared.SimpleSafeHtmlRenderer.render上(SimpleSafeHtmlRenderer.java:1)
位于com.google.gwt.cell.client.AbstractSafeThmlCell.render(AbstractSafeThmlCell.java:80)
位于com.google.gwt.user.cellview.client.cellllist.renderRowValues(cellllist.java:527)
位于com.google.gwt.user.cellview.client.AbstractHasData$View.renderRowValues(AbstractHasData.java:337)
位于com.google.gwt.user.cellview.client.AbstractHasData$View.replaceAllChildren(AbstractHasData.java:239)
位于com.google.gwt.user.cellview.client.HasDataPresenter.resolvePendingState(HasDataPresenter.java:1351)
位于com.google.gwt.user.cellview.client.HasDataPresenter.access$3(HasDataPresenter.java:1062)
位于com.google.gwt.user.cellview.client.HasDataPresenter$2.execute(HasDataPresenter.java:984)
在com.google.gwt.core.client.impl.SchedulerImpl$Task$.executeScheduled$(SchedulerImpl.java:50)
位于com.google.gwt.core.client.impl.SchedulerImpl.runScheduledTasks(SchedulerImpl.java:228)
在com.google.gwt.core.client.impl.SchedulerImpl.flushFinallyCommands上(SchedulerImpl.java:327)
位于com.google.gwt.core.client.impl.impl.exit(impl.java:266)
位于com.google.gwt.core.client.impl.impl.entry0(impl.java:257)
在sun.reflect.GeneratedMethodAccessor24.invoke处(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源)
位于java.lang.reflect.Method.invoke(未知源)
位于com.google.gwt.dev.shell.MethodAdapter.invoke(methodAdapter.java:103)
位于com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
位于com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
位于com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:293)
位于com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:547)
在com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:364)
位于java.lang.Thread.run(未知源)
我不知道它为什么要对字符串下命令。我觉得这里缺少了一些关于序列化的基本内容,有人能给我指出正确的方向吗。尝试实现而不是可序列化。但一般来说,您的代码应该可以工作。此错误有时会发生(在调试期间),但在大多数情况下,它在重新编译后工作。为了允许使用
GWT-RPC
将数据类型从客户端传输到服务器,您需要通过实现IsSerializable
或serializable
接口将它们标记为可序列化。您还必须确保类字段(final/transient字段除外,它根本不会被序列化)的可序列化性以及存在默认的零参数构造函数(或者根本没有)
编辑:最终字段的序列化实际上正在进行中
如果由于某种原因无法满足这些要求,则需要使用填充了对象数据的DTO
s,以便将它们传输到客户机/服务器或从客户机/服务器传输出去。或者您可以尝试为该类实现自己的
如果需要,请查看和。并清除war目录中的所有*.gwt.rpc文件,以强制重新创建序列化策略。是否有.gwt.xml文件@com/cbs/ioma/folder?您的jar中是否包括com.cbs.ioma.client.Order的.java文件?如果您所指的是WAR文件,我将xml文件放在WAR文件中。我需要第二个吗?my order.java在com.cbs.ioma.clientYes中。您应该实现gwt rpc的isSerializable,而不是java serializable。