2

DWR3とSpring3を統合するWebアプリケーションがあります。すべてのリクエストはSpringのDispatcherServletによって処理されます。すべてが機能します。AJAXリクエストをリクエストすると、@RemoteProxyで注釈が付けられたバッキングDWRサービスBeanによって正しく処理されます。応答を返すために、私のDWRサービスBeanは、@DataTransferObjectPOJOを含むHTML文字列またはプレーンPOJOのいずれかを返します。

私がやりたいのは、DWRサービスBeanで、処理をSpring@ControllerBeanに転送することです。AJAXリクエストは引き続きDWRサービスによって処理されますが、実際の処理はSpringコントローラーBeanに委任されます。つまり、DWRサービスBeanは、実際のサービスに対する単なるサービスファサードです。このように、私はロジックを複製していません。

これは可能ですか?

さらに明確にしましょう。

通常の非AJAXアプリケーションでは、ユーザーがフォームを送信すると、次のようになります。

  1. DispatcherServletに転送されます
  2. 次に、@Controller注釈付きBeanに移動します。
  3. その後、処理は@ServiceBeanによって処理されます。
  4. その後、コントローラーはModelAndViewを返します。

DWR-AJAXアプリケーションでは、ユーザーがフォームを送信すると、次のようになります。

  1. それはまだDispatcherServletに転送されます
  2. 次に、@RemoteProxy注釈付きBeanに移動します。処理はこのBeanによって処理されます。それがDWRのサービスBeanです。
  3. その後、このリモートプロキシBeanは@DataTransferObjectPOJOまたは単なるHTML文字列を返します

基本的に、AJAXアプリケーションの場合、ステップ2の後で、@ Controller Beanに転送して、すべてがSpringによって処理されるようにします。

4

2 に答える 2

2

短い答えはノーです。

スプリング コントローラーの DWR 要求には場所がありません。DWR は Spring Bean のリモート処理を強力にサポートしていますが、コントローラーがこの方程式にもたらす価値はほとんどありません。

つまり、公開された DWR Bean として Spring 3.0 スタイルの注釈付きコントローラーを使用できないと考える理由はありません。制限は、戻り値の型がModelAndViewモデルオブジェクトではなく、それ自体であるということです。

于 2010-12-24T11:25:05.490 に答える
0

この場合の注釈の使用についてはよくわかりません。宣言型アプローチを使用すると、次のことができます。

春のXML(fileOperationServiceは春のBeanであることに注意してください)

    <bean name="BookRequestAjax" class="com.bookie.struts.BookRequestAjax">
        <property name="fileOperationService" ref="fileOperationService"/>
    </bean>

あなたの豆

public class BookRequestAjax {
    FileOperationService fileOperationService;
    public void deleteFile(String fileName){
        try{
            fileOperationService.deleteFile(fileName);
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    public void setFileOperationService(FileOperationService fileOperationService) {
        this.fileOperationService = fileOperationService;
    }

}

DWR.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
    <allow>
    <create creator="spring" javascript="BookRequestAjax">
      <param name="beanName" value="BookRequestAjax" />
    </create>
    </allow>
</dwr>
于 2010-12-24T10:05:02.173 に答える