我正在使用gwt与gwt-platform并使用dispatch async进行服务器调用。我遇到的问题是我正在使用的Action没有被标记为可序列化或被添加到* .gwt.rpc文件中。当我的代码运行时,我得到了一个
com.google.gwt.user.client.rpc.SerializationException 在com.google.gwt.user.client.rpc.impl.SerializerBase.getTypeHandler(SerializerBase.java:153) 在com.google.gwt.user.client.rpc.impl.SerializerBase.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(AbstractSerializationStreamWriter.java:126) 在com.gwtplatform.dispatch.shared.DispatchService_Proxy.execute(DispatchService_Proxy.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有结果,Handler和处理程序绑定在我的服务器模块中。当我调试代码并查看序列化映射时gwt生成此操作并且其结果不存在事件虽然这实现了isSerializable接口(在超类中,如果我在此使用Serializable或isSerializable,它仍然不起作用等级)。当我查看我的* .gwt.rpc文件时,该类也不在那里。我只是陷入困境,并希望有人知道该做什么或出了什么问题。
更新:我不知道它是否相关,但我在服务器上使用spring。
答案 0 :(得分:3)
我发现了我的问题。我在Result对象中忘记了一个无参数的构造函数,我也使用了一个Builder来创建我的动作,并且由于某些原因导致序列化问题,一旦我停止使用Builder模式,一切都顺利进行。