0

私はGWTの初心者です。現在、 RESTからのデータを消費し、それらの詳細をGWTに表示するWebアプリケーションをSpringで作成しようとしています。そこで、 クライアントにSpring RestTemplateを使用して(リクエストを作成し、Javaオブジェクトにアンマーシャリングするため)、依存性注入をSpring(アノテーション)に任せました。私はこれらすべてをGWT-2.4プラグインを備えたEclipseIDEで開発しました。

以下のケースでこのWebアプリケーションを起動しようとしましたが、指定された問題に直面しています。

ケース#1: アプリケーションをGoogle Webアプリケーションとして起動しようとすると(右クリック->実行-> Google Webアプリケーション)、依存性注入が行われず、プロパティ参照にNullPointerExceptionがスローされます。私がGoogleアプリとして起動しているとき、コンテキストが読み込まれないため、Bean-DIが発生していないと思います。

ケース#2: Tomcatサーバーで実行しようとすると、すべてのBeanの作成と依存性注入が発生しますが、GWTのエントリポイントにはなりません。コントローラーを明示的に定義していません。これは、GWTがコントローラーを処理することを考えているためです(Google Web App Serverで実行する場合と同様)。

注:アプリケーションは、GWTモジュールを個別に実行している場合(WebServiceからのデータを消費しない場合)に完全に機能し、Spring RestTemplateモジュールでさえRestServiceを消費し、System.Out.println()に値を表示します。

中心的な問題は、GWTとSpringDIの間の相互作用を作成することです。

Project.gwt.xml:

<inherits name='com.google.gwt.user.User'/>
<inherits name='com.google.gwt.user.theme.clean.Clean'/>

<entry-point class='com.abc.XXXX.gwt.ui.client.XXXX'/>

  <source path='client'/>
  <source path='shared'/>
  <source path='service'/>

ApplicationContext.xml:

<context:component-scan base-package="com.serco.XXXX" />

<context:property-placeholder location="classpath:ClientConfig.properties" />

<bean id="clientSkillService" class="com.abc.XXXX.gwt.ui.service.clientService.impl.ClientSkillService"
    p:hostName="${rest.hostName}"
    p:portNumber="${rest.port}"
    p:userName="${rest.userName}"
    p:password="${rest.password}">
</bean>

<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
    <property name="messageConverters">
        <list>
            <bean class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
                <constructor-arg>
                    <bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
                        <property name="classesToBeBound">
                            <list>
                                <value>com.abc.XXXX.gwt.ui.shared.SkillDetailList</value>
                                <value>com.abc.XXXX.gwt.ui.shared.SkillDetail</value>
                            </list>
                        </property>
                    </bean>
                </constructor-arg>
            </bean>
        </list>
    </property>
</bean>

Web.xml:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
    classpath:ApplicationContext.xml
    </param-value>
</context-param>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

親切にあなたの提案、それを機能させる方法を提供してください。

前もって感謝します。

更新: HTMLファイル

 <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>XYZ UI DASHBOARD</title>
    <script type="text/javascript" language="javascript" src="RTSocketDataMonitor/RTSocketDataMonitor.nocache.js"></script>
  </head>
  <body>
    <h1 align="center">XYZ UI DASHBOARD</h1>
    <div align="center" id="grid_tbl"></div>
</body>

エントリポイントクラス:XXXX.java

public class XXXX implements EntryPoint {
    /*entry point method*/
    public void onModuleLoad() {
        //Creation of DialogBoxes and Panel here
        DialogBox dialogBox;
        //Creation of Composite Derived Class which has DataGrid, DataList, Columnprovider properties to render Details in Table format
        SkillDetailPaginationHandler<SkillDetail> skd = 
        new SkillDetailPaginationHandler<SkillDetail>();
        //added VertiCal Panel in Dialogue Boxes and set it in RootPanel
        RootPanel.get("grid_tbl").add(dialogBox);
    }
}

GWTコンパイル済みWARの内容:

  ->Root
      -->XXXX(Folder in the Project Name)
        -->gwt(Folder)
        -->XXXX.nocache.js
        -->host.html
      -->WEB-INF (Folder)
        --> deploy
        --> lib 
        --> web.xml
4

1 に答える 1

0

両方のモジュールを別々のプロジェクトに分ける必要があります。

最初にGWTモジュールをコンパイルしてから、生成されたファイルをメインのWebプロジェクトに配置し、WebアプリケーションのコントローラーからGWTプロジェクトの.htmlファイルを呼び出す必要があります。あなたがこれを理解し、それがあなたを助けることを願っています。

于 2012-10-19T10:53:34.620 に答える