gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 12:07:28 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com