我仍然试图用GWT和Maven制作我的项目。
现在,我在ActionHandlers中遇到了错误。
我在示例和其他项目(不使用maven)中配置Guice就像教程一样,它按预期工作,但是,在这个项目中,似乎guice servlet没有将ActionModuler中的Action绑定到ActionModule:
public class ServerModule extends HandlerModule
{
@Override
protected void configureHandlers()
{
System.out.println("ServerModule.configureHandlers()");
install(new ControllerModule());
bindHandler(SalvarUsuarioAction.class, SalvarUsuarioActionHandler.class);
}
}
我也看了一个sysout,但它从未出现在控制台中。
当我尝试执行操作时,出现此错误:
com.gwtplatform.dispatch.shared.UnsupportedActionException: No handler is registered for br.com.tests.shared.commands.usuario.salvar.SalvarUsuarioAction
at com.gwtplatform.dispatch.shared.UnsupportedActionException_FieldSerializer.instantiate(UnsupportedActionException_FieldSerializer.java:16)
at com.gwtplatform.dispatch.shared.UnsupportedActionException_FieldSerializer.create(UnsupportedActionException_FieldSerializer.java:25)
at com.google.gwt.user.client.rpc.impl.SerializerBase.instantiate(SerializerBase.java:115)
at com.google.gwt.user.client.rpc.impl.ClientSerializationStreamReader.deserialize(ClientSerializationStreamReader.java:111)
at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamReader.readObject(AbstractSerializationStreamReader.java:119)
at com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter.java:216)
at com.google.gwt.http.client.Request.fireOnResponseReceived(Request.java:287)
at com.google.gwt.http.client.RequestBuilder$1.onReadyStateChange(RequestBuilder.java:395)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:337)
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:218)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:561)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:269)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
at com.google.gwt.core.client.impl.Impl.apply(Impl.java)
at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:213)
at sun.reflect.GeneratedMethodAccessor35.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:292)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:546)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363)
at java.lang.Thread.run(Thread.java:662)
我只是无法弄清楚为什么它不起作用,我的web.xml也是正确的,我认为,无论如何,代码是:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" 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">
<listener>
<listener-class>br.com.testes.server.guice.GuiceServletConfig</listener-class>
</listener>
<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>*</url-pattern>
</filter-mapping>
<filter>
<filter-name>CacheFilter</filter-name>
<filter-class>br.com.testes.server.filter.CacheFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CacheFilter</filter-name>
<url-pattern>/gwt/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>jUnitHostImpl</servlet-name>
<servlet-class>com.google.gwt.junit.server.JUnitHostImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>jUnitHostImpl</servlet-name>
<url-pattern>/br.com.digitaldoc.detran.DetranJUnit/junithost/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>jUnitHostImpl</servlet-name>
<url-pattern>/Testes/junithost/*</url-pattern>
</servlet-mapping>
<!-- Default page to serve -->
<welcome-file-list>
<welcome-file>Testes.html</welcome-file>
</welcome-file-list>
</web-app>
我做错了吗? 提前谢谢。
答案 0 :(得分:1)
我遇到了同样的问题,它是由Eclipse引起的。
在项目偏好中,'Google - &gt;网络应用程序 - &gt; war目录的设置被设置为/ src / main / webapp。通过这个设置,Eclipse生成了rpc存根(和其他东西)到WEB-INF directroy中,然后在构建应用程序时由maven复制。我不知道为什么但是eclipse在构建时没有清理这些文件。所以旧的rpc存根被用来代替新的。
此问题的解决方案是从webapp目录(和子目录)中删除所有生成的文件,并更改“Google - &gt;网络应用程序 - &gt; war目录'到你的目标/目录。这至少在我的案例中起作用。
答案 1 :(得分:0)
我用maven创建了一个新项目,但它确实有效。不知道这里发生了什么。
如果有人有更新,请告诉我。感谢。