我用以下代码编写了一个快速的GWT应用程序:
MyTaskService
package com.google.gwt.mytasks.client;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
@RemoteServiceRelativePath("taskAction")
public interface MyTasksService extends RemoteService {
public void addTask(String title, String description);
}
的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<!-- Default page to serve -->
<welcome-file-list>
<welcome-file>MyTasks.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>MyTasksService</servlet-name>
<servlet-class>com.google.gwt.mytasks.server.MyTasksServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyTasksService</servlet-name>
<url-pattern>/mytasks/taskAction</url-pattern>
</servlet-mapping>
</web-app>
模块 .gwt.xml
<module rename-to='mytasks'>
<inherits name="com.google.gwt.user.User"/>
<inherits name="com.google.gwt.user.theme.standard.Standard"/>
<entry-point class="com.google.gwt.mytasks.client.MyTasks"/>
<!-- Specify the paths for translatable code -->
<source path='client'/>
<source path='shared'/>
</module>
每次点击提交按钮,我都会收到以下错误:
com.google.gwt.user.client.rpc.StatusCodeException:404 未找到错误404
HTTP错误:404
NOT_FOUNDRequestURI = / com.google.gwt.mytasks.MyTasks / taskAction
技术支持 码头://
码头 中国人
答案 0 :(得分:4)
问题似乎是GWT在发布之前没有重命名模块,我看看RemoteServiceRelativePath注释documentation它将servlet路径定义为GWT.getModuleBaseURL()+ value(),是值()给予注释的值。一个可能有效的简单解决方案是在模块正在查看的路径上定义servlet映射。
而不是:
<servlet-mapping>
<servlet-name>MyTasksService</servlet-name>
<url-pattern>/mytasks/taskAction</url-pattern>
</servlet-mapping>
使用:
<servlet-mapping>
<servlet-name>MyTasksService</servlet-name>
<url-pattern>/com.google.gwt.mytasks.MyTasks/taskAction</url-pattern>
</servlet-mapping>