【发布时间】:2011-01-03 19:19:15
【问题描述】:
在 GWT 中,请求被发送到 XXXX.rpc,后者映射到“GWT 控制器”(RemoteService)。将被调用的方法名称隐藏在该请求的帖子中。
有没有办法将方法名称作为附加的 HTTP 标头或作为 URL 的一部分发送?这样我们就可以在访问日志中记录方法名称。
我知道有一个RpcRequestBuilder 类,但我不知道如何扩展它以将方法名称添加到标题或 URL。
【问题讨论】:
在 GWT 中,请求被发送到 XXXX.rpc,后者映射到“GWT 控制器”(RemoteService)。将被调用的方法名称隐藏在该请求的帖子中。
有没有办法将方法名称作为附加的 HTTP 标头或作为 URL 的一部分发送?这样我们就可以在访问日志中记录方法名称。
我知道有一个RpcRequestBuilder 类,但我不知道如何扩展它以将方法名称添加到标题或 URL。
【问题讨论】:
如果可能的话,我认为你应该以不同的方式解决这个问题。这是另一个想法。
方法名其实已经发送了,只是像你说的那样被埋没了。但是在服务器端你可以捕捉到这个名字。在RemoteServiceServlet 中有一个受保护的方法onAfterRequestDeserialized,它为您提供数据的解码版本,并且专门针对这类事情。它包含方法名称。只需扩展此方法并在其中记录方法名称即可。这样您就不必在客户端代码中添加技巧。
【讨论】:
我认为这个链接可以帮助你..http://stuffthathappens.com/blog/2009/12/22/custom-http-headers-with-gwt-rpc/
编辑: 您应该在调用远程服务方法之前设置 methodName..
public class MyRpcRequestBuilder extends RpcRequestBuilder() {
String methodName;
public void setMethodName(String name) {
methodName = name;
}
@Override
protected RequestBuilder doFinish(RequestBuilder rb) {
RequestBuilder rb = super.doFinish(rb);
rb.setHeader("method", methodName);
return rb;
}
};
【讨论】: