Pergunta

No meu aplicativo GWT eu tenho a seguinte classe de modelo:

import com.google.gwt.user.client.rpc.IsSerializable;

public class TestEntity implements IsSerializable {
    public String testString;
}

Esta classe implementa o GWT personalizado IsSerializable marcador de interface - o que eu realmente não gosto, porque eu uso o meu classes de modelo não só para GWT.Por isso, prefiro java.io.Serializable.

Mas se eu modificar a classe para implementar Serializable em vez de IsSerializable, o GWT RPC mecanismo não funciona mais. Eu não receber um erro no lado do servidor, mas no cliente AsyncCallback.onFailure é invocado.

Eu estou usando...

  • GWT 1.7.0.
  • Primavera 2.5.6.SEC01
  • A primavera e o GWT são configurados como descrito aqui.
Foi útil?

Solução 3

OK, passei pelos comentários da artícula GWT-Spring (o link que publiquei) e encontrei a solução. Eu tive que mudar duas linhas no método de chamada do processo:

RPCRequest rpcRequest = RPC.decodeRequest(payload, this.remoteServiceClass, this);
return RPC.invokeAndEncodeResponse(this.remoteService, rpcRequest.getMethod(), rpcRequest.getParameters(), rpcRequest.getSerializationPolicy());

Outras dicas

Acontece que esta Spring-MVC e GWT técnica híbrida está sendo usado no código base no meu novo emprego - não admira que o erro que eu estava recebendo era semelhante!Obrigado por esta postagem me ajudou a identificar o problema e corrigi-lo.O código que tivemos foi com base no antigo código do artigo que você postou - ou o que quer que o código foi baseado em!Plágio não faltam!

Para resumir, que o artigo propõe uma forma de integrar o GWT com o Spring-MVC.O cerne da solução é fornecer um Servlet servlet classe que combina uma Mola Controlador MVC com um GWT RemoteServiceServlet.Serializable DTO objetos não eram suportados, uma vez que (presumo) o código foi baseado em pré-GWT-1.4 código, o que poderia lidar com DTOs que não implementar GWT do isSerializable marcador de interface.A actualização para o controlador de classe é muito simples uma vez que você sabe o que está acontecendo...

As duas linhas fixas vejo simplesmente passam a SerializationPolicyProvider (que é o 'isto' o último parâmetro para RPC.decodeRequest() método.A chamada classe estende GWT do RemoveServiceServlet, que é um SerializationPolicyProvider).Esta correção simples eu presumo que faz com que o atualizada (pós 1.4) GWT código a ser invocado, o que pode lidar com Serializable bem como isSerializable classes.O SerializationPolicyProvider olha o serializationPolicy.

A segunda correção passa a serializationPolicy através de RPC.invokeAndEncodeResponse() método.Presumo que este é o *.gwt.rpc branca de DTO objetos que foram verificados quando o GWT módulo foi compilado.

Qual é exatamente o erro que você recebe? Estamos usando serializável para nossos DTOs sem problemas, para que você também possa ser capaz.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top