shi*_*ght 2 gwt requestfactory
我想使用ValueProxy参数调用Service上的方法 - 如果我执行personProxy.setName("test")然后request.callFn(personProxy).fire(),则name属性不会传递给服务器.
在设置名称或其他内容之前,我应该执行request.edit(personProxy)吗?
这是我正在使用的实现:
//somewhere in MyActivity.java ...
PersonProxy cp = requestFactory.myRequest().create(PersonProxy.class);
cp.setName("John Doe");
requestFactory.myRequest().doSomething(cp,"extra_param_value").fire(new Receiver<List<PersonProxy>>() {
@Override
public void onSuccess(List<PersonProxy> response) {
//response from server...
}
});
//------------------------
public interface MyRequestFactory extends RequestFactory {
MyRequest myRequest();
}
//------------------------
@ServiceName(value="com.server.MyService", locator="com.server.MyServiceLocator")
public interface MyRequest extends RequestContext {
public Request<Integer> doSomething(PersonProxy param, String extraParam);
}
//------------------------
public class MyServiceLocator implements ServiceLocator {
public Object getInstance(Class<?> clazz) {
return new MyService();
}
}
//------------------------
public class MyService {
public Integer doSomething(Person param, String extraParam) {
System.out.println("person.name="+param.getName()); ---> prints NULL!!! why?
return 0;
}
}
//------------------------
@ProxyForName(value="com.server.Person")
public interface PersonProxy extends ValueProxy {
String getName();
void setName(String name);
}
//-----------------------
public class Person {
public Person() {
super();
}
protected String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
它PersonProxy是由一个实例创建的,RequestContext并在另一个实例中使用.原来有一个错误AbstractRequestContext.retainArg(),应该抛出异常来告诉你API误用.可编辑代理不应该在不同RequestContext实例之间可用.
TreeRequest ctx = factory.treeRequest();
PersonProxy person = ctx.create(PersonProxy.class);
person.setName("John Doe");
ctx.doSomething(person, "more stuff");
Run Code Online (Sandbox Code Playgroud)
正如在IRC上讨论的那样,-Dgwt.rpc.dumpPayload=true当试图诊断数据的去向(或不是)时,可以打开JVM标志.
| 归档时间: |
|
| 查看次数: |
3211 次 |
| 最近记录: |