Vaadin、Spring MVC統合
-
19-09-2019 - |
質問
んでもらえるように考えている可能性をSpring MVCとVaadin。ある文書化し、遊びも。もで使うようにするといいでしょうしの相互の関連性を検討した。に関する性能私のアプリケーション専用のサーバーです。
う私の質問は、ビットより明確にしたいので返しますmodelandviewからSpring MVCコントローラと余計に不利用Vaadin、アクセスできるすべてのモデルデータです。
解決
春支援Vaadinはなかなか新しいものではなく、いくつかのフォーラムの一部を実施しています。いるようです。あのVaadin wikiでは、一部のスレッドのフォーラムの話Vaadin+春の統合:
Wiki:春の統合
フォーラム:でもミルツールキットに統合される春の応用
フォーラム:春の統合の問題
フォーラム:携春
フォーラム:春の統合
他のヒント
VaadinをSpring MVCと統合することが賢明な選択かどうかはわかりません。その無駄。 MVCは、vaadinがデスクトップアプリのようによりビュー状態ベースの典型的なページベースのWebアプリを対象としています。私は通常、途中で会議を行い、春にビジネス層とデータアクセスレイヤーを使用し、そのままVaadinを使用します。
見る このスレッド 私のためのヴァーディンフォーラムで AutowiringApplicationServlet
サンプル戦争アプリケーションを含むソリューション。
DHRBOに同意しました。
Spring MVCを使用するのは賢明ではありません。 Vaadinは別のWebアプリフレームワークです。
Vaadinプロジェクトで「Spring MVC」のアイデアが必要な場合は、スプリングコア、豆、コンテキストと統合してください。そうすれば、コントローラー、UI(Vaadin)、およびモデル(Hibernate / ormsと統合)の間で明確な分離を取得できます。
スプリングサービスレイヤーとヴァーディンの統合に関する記事を次に示します。元の質問があったスプリングMVCに直接関係しているわけではありませんが、Vaadin Springの統合を研究する他の読者にとってはまだポインターである可能性があります。
http://psponcoding.blogspot.com/2011/03/vaadin-spring-integration.html
org.springframework.web.servlet.mvc.Controller
のハンドレレックは次のとおりです HttpServletRequest
と HttpServletResponse
パラメーターとして。これらから、URIフラグメントを処理することはできません。そのため、コントローラーは、URIフラグメントに基づいたリクエストの制御には適していません。
私のアプリケーションでは、Spring Controllerと非常によく似た概念を実装しました。私のアプリケーションには、まだ「ビュー」と「モデル」の概念があります。各ビューは別のクラスに実装され、ページの中央ブロックに表示されます。 URL処理のロジックをそのクラスに集中させたかったので、クラスを作成しました AbstractControllerEntry
:
public static abstract class AbstractControllerEntry {
public abstract boolean matches(String fragment);
public abstract void open(MainWindow window, String fragment);
}
などのいくつかの便利なサブクラスがあります ConstantEntry
, PrefixEntry
と RegexEntry
.
各ビュークラスには静的方法があり、それは戻ります AbstractControllerEntry
. 。すべてのエントリのコレクションは、の内側の静的配列に保持されます MyController
クラス(スプリングMVCコントローラーではありません)。フラグメントの変更について(参照してください urifragmentutility)、私はすべてのエントリを反復し、最初に一致するために、私は開いて呼び出します。モデルオブジェクトを見つけるなど、他のロジックは、ビュークラスの内側にあります。 AbstractControllerEntry
実装。
さらに、ビュークラスにURIフラグメントを生成する別の静的方法があります。そのため、ビューへの各参照はクラスへの実際の参照であり、これは壊れたリンクのソリューションです。また、各ビューには、電流ビューのフラグメントを取得するインスタンス方法があります。これは、コントローラーのエントリに一致するようにチェックされ、堅牢性を高めるためにチェックされます。