我有一个有botton的页面。我想点击按钮并打开一个新窗口。同时,我会将Json数据发送到该请求。我知道gwt有get方法打开一个像这样的新窗口:Window.open(url,“”,“”);但这不是一种后期方法。 所以我尝试使用RequestBuilder。但是,这只是一个Ajax调用。我想要的是在发送post json请求之后,它将获得响应(响应包括html div)并打开一个新窗口。任何人都有任何想法?
答案 0 :(得分:1)
尝试使用HttpSession保存同一域内任何页面都可以访问的用户特定数据的状态。
要遵循的步骤:
包括GWT PRC类的完整示例代码
@RemoteServiceRelativePath("greet")
public interface GreetingService extends RemoteService {
public void setJSON(String json)throws IllegalArgumentException;
}
public interface GreetingServiceAsync {
void setJSON(String json, AsyncCallback<Void> callback);
}
public class GreetingServiceImpl extends RemoteServiceServlet implements GreetingService {
@Override
public void setJSON(String json) throws IllegalArgumentException {
// set the JSON string in HTTP Session
getThreadLocalRequest().getSession().setAttribute("json", json);
}
}
的web.xml:
<servlet>
<servlet-name>greetServlet</servlet-name>
<servlet-class>com.x.y.z.server.GreetingServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>greetServlet</servlet-name>
<url-pattern>/modulename/greet</url-pattern>
</servlet-mapping>
入口点类:
GreetingServiceAsync greetingService = GWT.create(GreetingService.class);
public class GWTProject implements EntryPoint {
public void openNewWindow(final String json) {
greetingService.setJSON(json, new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
}
@Override
public void onSuccess(Void result) {
// open any page within the same domain
Window.open("/page.jsp", "", "");
}
});
}