简单的问题。我需要在GWT 中发出一个重定向到新页面的GET请求,但我找不到合适的API。
有吗?我应该自己简单地形成URL,然后做Window.Location.replace?
(原因是我希望我的搜索页面可以链接)
感谢。
(对不起,最初我的问题不够清楚)
答案 0 :(得分:12)
public class GetExample implements EntryPoint {
public static final int STATUS_CODE_OK = 200;
public static void doGet(String url) {
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url);
try {
Request response = builder.sendRequest(null, new RequestCallback() {
public void onError(Request request, Throwable exception) {
// Code omitted for clarity
}
public void onResponseReceived(Request request, Response response) {
// Code omitted for clarity
}
});
} catch (RequestException e) {
// Code omitted for clarity
}
}
public void onModuleLoad() {
doGet("/");
}
}
答案 1 :(得分:2)
GWT并不禁止您使用常规servlet。
您可以在'web.xml'文件中声明一个servlet:
<servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>org.myapp.server.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>myServlet</servlet-name>
<url-pattern>/myurl/*</url-pattern>
</servlet-mapping>
然后你可以实现你的Servlet:
public class MyServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws
IOException {
// your code here
}
}
答案 2 :(得分:2)
使用Window.Location.replace重定向到新页面。
应使用历史记录机制处理多个页面。
答案 3 :(得分:1)
如果您打开一个单独的窗口,很容易:
Window.open(url, windowName, "resizable=yes,scrollbars=yes,menubar=yes,location=yes,status=yes");
否则,请使用RequestBuilder
作为Silfverstrom建议。
答案 4 :(得分:0)
与answer from ivo相似。我可以使用filter mapping
在我的GWT todomvc框架中执行此操作,而不是在web.xml
文件中执行servlet映射。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee">
<filter>
<filter-name>guiceFilter</filter-name>
<filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>guiceFilter</filter-name>
<url-pattern>/myurl/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>com.todomvc.server.ToDoServerInjector</listener-class>
</listener>
<!-- Default page to serve -->
<welcome-file-list>
<welcome-file>GwtGaeChannelToDo.html</welcome-file>
</welcome-file-list>
</web-app>