我将gwt与gwt平台一起使用,并使用dispatch-async进行服务器调用。我遇到的问题是,我正在使用的Action没有被标记为可序列化,也没有被添加到*.gwt.rpc文件中。当我的代码运行时,我得到一个
com.google.gwt.user.client.rpc.SerializationException网址:com.google.gwt.user.client.rpc.impl.SerizerBase.getTypeHandler(SerializerBase.java:153)网址:com.google.gwt.user.client.rpc.impl.SerizerBase.serialize(SerializerBase.java:125)网址:com.google.gwt.user.client.rpc.impl.ClientSerializationStreamWriter.serialize(ClientSerializationStreamWriter.java:183)网址:com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationsStreamWriter.java:126)位于com.gwtplatform.dispatch.shared.DispatchService_Poxy.execute(DispatchService_poxy.java:33)位于com.gwtplatform.dispatch.client.DefaultDispatchAsync.serviceExecute(DefaultDispatchAsync.java:126)在com.gwtplatform.dispatch.client.DefaultDispatchAsync.execute(DefaultDispatchAsync.java:…
行动:
public class FindCallsWithFilterAction extends UnsecuredActionImpl<FindCallsWithFilterResult> {
public FindCallsWithFilterAction() {
}
public Date getAfter() {
return after;
}
public Date getBefore() {
return before;
}
public Long getReferenceNumber() {
return referenceNumber;
}
public String getUser() {
return user;
}
public void setAfter(Date after) {
this.after = after;
}
public void setBefore(Date before) {
this.before = before;
}
public void setReferenceNumber(Long referenceNumber) {
this.referenceNumber = referenceNumber;
}
public void setUser(String user) {
this.user = user;
}
public boolean hasAfter(){
return null != after;
}
public boolean hasBefore(){
return null != before;
}
public boolean hasReferenceNumber(){
return null != referenceNumber;
}
public boolean hasUser(){
return null != user;
}
private Date after = null;
private Date before = null;
private Long referenceNumber = null;
private String user = null;
}
Action有结果和一个处理程序,该处理程序绑定在我的服务器模块中。当我调试代码并查看序列化映射时,gwt生成了此操作及其结果不存在事件,尽管它实现了isSerializable接口(在超级类中,如果我在该级别使用Serializable或isSerializaable,它仍然不起作用)。此外,当我查看*.gwt.rpc文件时,该类也不在其中。我只是被卡住了,希望有人知道该做什么或出了什么问题。
更新:我不知道它是否相关,但我在服务器上使用spring。
我发现了我的问题。我在Result对象中忘记了一个无arg构造函数,而且我正在使用Builder来创建我的操作,由于某种原因,一旦我停止使用Builder模式,就会导致序列化问题,一切都顺利运行。