java - GWT- POST object/json 并转到另一个页面

标签 java json post gwt dictionary

我引用了此链接: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/

相关文章:

python - 如何在 python 中发布 xml 元素

java - 在java中继承类是否可以,即使它不适合这项工作

sql - 如何在 Golang 中将 *sql.Rows 转换为类型化的 JSON

json - 放心 : extracting list of values from Json Response using java

google-chrome - 是否可以使用 Postman Chrome 扩展发送数组?

php - 以表单发送奇怪的 x 和 y POST 值

java - 使用 Java 读取 WIRELESS .pcap 数据包

Java ObjectOutputStream 的方法flush()

java - 将 linkedHashMap 值与 Java 中的字符串进行比较

c# - 如何将 JSON 转换为 C# 字典?