我引用了此链接:How to post data and redirect to another page using GWT?
我可以使用 formpanel,但我卡在某个地方,请帮忙。
这是我的代码:
HashMap<String, String> map = new HashMap<String, String>();
map.add(...some information....); //want to send this map in POST
我想使用 POST 发送 map ,并且我想转到另一个页面。
我可以使用此代码(在 How to post data and redirect to another page using GWT? 中回答):
FormPanel form = new FormPanel("_self");
form.setMethod(FormPanel.METHOD_GET);
Hidden params0 = new Hidden("param1", "value1");
Hidden params1 = new Hidden("param1", "value2");
Hidden params2 = new Hidden("param2", "value3");
FlowPanel panel = new FlowPanel();
panel.add(params0);
panel.add(params1);
panel.add(params2);
form.add(panel);
form.setAction(GWT.getModuleBaseURL() + "../test");
RootPanel.get().add(form);
form.submit();
但是如何将已创建的 map 与 POST 一起发送?
在服务器端:
@RequestMapping(value = "/test",method = RequestMethod.POST)
@ResponseBody
public String test(@RequestBody final HashMap<String, String> map,HttpSession session)
{
//use the map
return another-page.jsp
}
最佳答案
最好通过 RPC 或 AJAX 发送数据并通过 Location.assign() 或 Location.replace() 重定向到另一个页面。如果您希望服务器提供动态 URL 进行重定向,您可以将其作为 RPC 或 AJAX 请求的响应发送。在当前示例中使用 AJAX 请求:
// map is your existing map object
JSONObject data = new JSONObject();
for (String key : map.keySet()) {
data.put(key, new JSONString(map.get(key)));
}
RequestBuilder request = new RequestBuilder(RequestBuilder.GET, "<URL>");
request.setRequestData(data.toString());
request.setCallback(new RequestCallback() {
@Override
public void onResponseReceived(Request request, Response response) {
String url = response.getText();
// url to redirect
Window.Location.assign(url);
}
@Override
public void onError(Request request, Throwable exception) {
// handle error
}
});
request.send();
或者您可以将映射序列化为字符串并将其作为 POST 请求的隐藏字段传递。
客户端代码:
String buffer = Streamer.get().toString(map);
FlowPanel panel = new FlowPanel();
panel.add(new Hidden("map", buffer));
FormPanel form = new FormPanel("_self");
form.setMethod(FormPanel.METHOD_POST);
form.setAction(<URL>);
form.add(panel);
RootPanel.get().add(form);
form.submit();
服务器代码:
@RequestMapping(value = <URL>,method = RequestMethod.POST)
@ResponseBody
public String test(@RequestBody String mapString,HttpSession session)
{
Map<String, String> map = (Map<String, String>) Streamer.get().fromString(mapString);
// use the map
return another-page.jsp
}
关于java - GWT- POST object/json 并转到另一个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27479391/