2

私はまだGWTとMavenでプロジェクトを作ろうとしています。

今、ActionHandlersでエラーが発生しました。

例や他のプロジェクト(mavenでは機能しない)でチュートリアルのようにGuiceを構成しましたが、期待どおりに機能しますが、このプロジェクトでは、guiceサーブレットがServerModuleのActionHandlerにアクションをバインドしていないようです。

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>

私は何か間違ったことをしていますか?前もって感謝します。

4

2 に答える 2

1

私も同じ問題を抱えていましたが、それはEclipseが原因でした。

プロジェクト設定で、「Google->Webアプリケーション->warディレクトリ」設定が/src / main/webappに設定されました。この設定により、Eclipseはrpcスタブ(およびその他のもの)をWEB-INFダイレクトロイに生成し、アプリケーションの構築中にmavenによってコピーされました。理由はわかりませんが、ビルド中にeclipseがこのファイルをクリーンアップしませんでした。そのため、新しいrpcスタブの代わりに古いrpcスタブが使用されました。

この問題の解決策は、生成されたすべてのファイルをwebappディレクトリ(およびサブディレクトリ)から削除し、「Google-> WebApplication->wardirectory」をtarget/ディレクトリに変更することです。少なくとも私の場合はうまくいきました。

于 2012-03-05T11:25:59.333 に答える
0

私はMavenで新しいプロジェクトを作成し、それが機能しました。ここで何が起こったのか理解できません。

誰かがアップデートを持っているなら、教えてください。ありがとう。

于 2012-02-27T13:07:25.530 に答える