这是我的客户端代码,通过RPC调用获取字符串“get-image-data”并从服务器获取import React from 'react';
import { imgUrl } from './environment';
export default class HiwComponent extends React.Component {
render() {
return (
<main className="box-960 box-center">
<h1 className="mt-64">How It Works</h1>
<ul id="how">
<li>
<img src={`${imgUrl}assets/img/ico-how-time.svg`} onError={() => { this.onerror=null; this.src=`${imgUrl}assets/img/ico-how-time.png` }} alt="Pick" />
<p><b>Pick</b> a time</p>
</li>
<li>
<img src={`${imgUrl}assets/img/ico-how-plane.svg`} onError={() => { this.onerror=null; this.src=`${imgUrl}assets/img/ico-how-plane.png` }} alt="Send" />
<p><b>Send</b> request</p>
</li>
</ul>
</main>
)
}
}
。
byte[]
从服务器端我得到的数据长度是241336。
但我无法在CommandMessage msg = new CommandMessage(itemId, "get-image-data");
cmain.ivClient.execute(msg, new AsyncCallback<ResponseMessage>() {
@Override
public void onFailure(Throwable caught) {
}
@Override
public void onSuccess(ResponseMessage result) {
if (result.result) {
result.data is byte[].
}
}
});
方法中获得价值。始终是onSuccess
方法。
我登录了Apache:
com.google.gwt.user.client.rpc.SerializationException:输入'[B'是 不包括在可以通过此序列化的类型集中 无法加载SerializationPolicy或其Class对象。
如何在GWT中进行序列化?
答案 0 :(得分:1)
1)创建一个实现Serializable接口的pojo 让这个pojo在RPC服务的响应中包含您想要的所有数据,在本例中为image-data
2)在您的RPC服务的响应中传递此pojo。
以下教程有足够的信息来创建RPC服务 http://www.gwtproject.org/doc/latest/tutorial/RPC.html
答案 1 :(得分:1)
您与服务器之间传输的对象必须实现IsSerializable。
您传输的对象中的所有自定义对象也需要实现IsSerializable。
您的对象不能包含最终字段,并且需要无参数构造函数。
你需要吸气剂和制定者。
GWT中的常见序列化对象:
public class MyClass implements IsSerializable {
private String txt;
private MyOtherClass myOtherClass; // Also implements IsSerializable
public MyClass() {
}
public String getTxt() {
return this.txt;
}
public void setTxt(String txt) {
return this.txt = txt;
}
public String getMyOtherClass() {
return this.myOtherClass;
}
public void setMyOtherClass(MyOtherClass myOtherClass) {
return this.myOtherClass = myOtherClass;
}
}