2009-08-03 7 views
6

GWT CRUDを作成するためのRuby on Rails足場に類似したものはありますか?GWT足場

答えて

0

GWTはRailsのような完全なアプリケーションスタックではないため、Railsと同じように統合されたソリューションを見つけることはできません。 GWTは主にビューレイヤーですが、依然としてパーシスタンスレイヤーが必要です。

+0

私はこれを理解していますが、永続化レイヤーの別のフレームワークをバンドルしても問題ありません。 – Otavio

3

Spring RooがGoogle I/O 2010で発表されました。それはあなたが探しているものかもしれません。

+0

+1、Spring Rooはおそらくあなたが探しているものです。 [GWTサイト](http://code.google.com/webtoolkit/doc/latest/ReleaseNotes.html#MvpFramework)でも言及されています。しかし、GWT 2.1を動作させる必要があります。 – Piotr

+0

[ここ](http://www.youtube.com/watch?v=GQHlhIIxCIc)には、Spring RooとGWTの統合に関するGoogle I/Oのプレゼンテーションがあります。 – Piotr

0

GWTは、IMOをほとんど解決しないすべての教科書CRUDフレームワークと比べて、異なるパラダイムを使用します。それを良い古いスイングと考えてください。通信は既に組み込まれています(GWT-RPC)。 CRUDフレームワークが提供していないものを改善する唯一の方法は、統一されたデータで動作するパターン(独自のより豊かなウィジェットセットなど)を作成することです。もちろん、サーバー上のマッチングコード。こうすることで、一般的なGWT-RPCメソッドと汎用データ構造を使用して、すべてのインタフェースで何百万というメソッドではなくデータを渡すことができます。さもなければ、GWT-RPCは "サービスファサード"の何百万ものメソッドを持つ一般的なCRUDの "フレームワーク"と同じくらい良いものです。

あなたができることの1つは、GWT-RPCをSpring MVCに統合することです。ほんの数行のコードしかなく、GWT-RPCサービスを標準Spring @Controllersとして実装できます。彼らはすべてのautowiredコンポーネントなどにアクセスできます。何をもっと必要としますか?あなたは春を通して絶対に何でもアクセスできます。だからここ

は、あなたがそれを行う方法は次のとおりです。

public abstract class GwtRpcController extends RemoteServiceServlet implements Controller, ServletConfigAware { 
private static Log log = LogFactory.getLog(GwtRpcController.class); 

private ServletConfig servletConfig; 

@Override 
public ServletConfig getServletConfig() { 
    return servletConfig; 
} 

@Override 
public void setServletConfig(ServletConfig servletConfig) { 
    try { 
     this.init(servletConfig); 
    } catch (ServletException e) { 
     throw new RuntimeException(e); 
    } 
    this.servletConfig = servletConfig; 
} 

@Override 
protected void onAfterRequestDeserialized(RPCRequest rpcRequest) { 
    super.onAfterRequestDeserialized(rpcRequest);  
} 

@Override 
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { 
    super.doPost(request, response); 
    return null; 
} 

@Override 
protected void doUnexpectedFailure(Throwable e) { 
    log.error(e.getMessage(), e); 
} 

}

そして、あなたのGWT-RPCサービス:

@RemoteServiceRelativePath("gwtrpc/xxx") 
public interface XxxService extends RemoteService { 
... 
} 

@Controller 
@RequestMapping(value = "xxx") 
public class XxxServiceImpl extends GwtRpcController implements XxxService { 
... 
} 

は、必ず "gwtrpc/*" がでSpringDispatcherサーブレットにマッピングされてくださいweb.xml。通常、すべてのもの( "/")をマップし、CSSなどの非Springリソースの例外を作成するので、明示的に何もする必要はありません。