我写了一个Spring REST应用程序。我用curl命令测试它,它真的很有效。
在另一个GWT Ajax应用程序中,我有一个RequestBuilder对象,它不能与我的Spring Rest一起使用:在调用sendRequest方法之后,事件onResponseReceived
被触发,但getText
方法返回一个空字符串。
这是我的spring servlet.xml配置文件的一部分
<bean id="jsonmembertemplate"
class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" >
<property name="contentType" value="text/javascript;charset=UTF-8"/>
<property name="disableCaching" value="false"/>
</bean>
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver" />
和我的控制器类的一部分
@RequestMapping(method = RequestMethod.GET, value="/member/get/{memberid}")
public String getMember(Model model, @PathVariable("memberid") int id, HttpServletResponse response) {
model.addAttribute("member", memberDao.get(id));
return "jsonmembertemplate";
}
和gwt代码
private RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, "http://localhost:8080/depna-nat-server/member/get/1?");
try {
rb.setHeader("Content-Type", "text/javascript;charset=UTF-8");
rb.sendRequest(null, new RequestCallback() {
@Override
public void onResponseReceived(Request request, Response response) {
Window.alert(Integer.toString(response.getStatusCode()));
Window.alert(response.getStatusText());
Window.alert(Integer.toString(response.getText().length()));
area.setText(response.getText());
}
@Override
public void onError(Request request, Throwable exception) {
Window.alert("fail");
}
});
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 0 :(得分:0)
我有几个gwt应用程序使用spring提供的json和xml rest服务,我们使用spring而不是gwt(rpc或rf),因为这些服务也提供给3方应用程序。
我用RequestBuilder开始了我的第一个项目,我们没有任何问题,所以也许你的代码中有一些问题,你能检查流量并发布你的错误吗?
如果您正在运行跨域问题(statusCode = 0通常意味着它),请向servlet容器添加一个过滤器,请查看this document。
我最终选择使用gwtquery-ajax和gquery-data-binding,因为它很容易使用这些服务并将它们映射到java对象。