web-dev-qa-db-ja.com

Spring MVCビューレイヤーのJSPの代替

私はゼロから新しいアプリを作成したいと考えており、おそらくSpring MVCとおそらくSpring Web Flowを使用します。 Spring Rooによって作成されたプロジェクトは、Spring MVCとオプションでWeb Flowを使用します。ビューテクノロジーの優れた代替手段は何ですか?それとも、SpringとJSTL taglibsとjQueryを備えたJSPを使用する方法ですか?

76
digitaljoel

標準のJava EE API、JSPの唯一の代替手段は Facelets です。これまでのところ(2010) [〜#〜] jsf [〜# 〜] は、Faceletsをネイティブにサポートする唯一のMVCフレームワークです。

Spring MVCは、JSPのみをサポートしていますが、設定可能な view resolver があり、とにかく Facelets を使用できます。他の候補は VelocityFreemarker 、および Thymeleaf などのサードパーティのテンプレートフレームワークで、Spring MVCのビューテクノロジーとして設定できます。 Springのドキュメントには、VelocityとFreemarkerで 統合例 があります。

50
BalusC

最近、 Thymeleaf を発見しました。

JSPの完全な代替品のように見え、Spring MVCと統合されています。テンプレートアプローチはHTMLに似ており、UIデザイナーにとってより魅力的かもしれません。 2つの solutions side-by-sideを比較する簡単な説明があります。

52
Shawn Sherwood

私は最近、JSONビューのみを作成するSpring MVCでのプレゼンテーションにプレーンHTMLとjQueryを使用し始めました。

これまでのところ、順調に進んでおり、javascriptの作業を行う必要がありますが、HTMLをJSPに変換する必要がないため、デザイナーとのやり取りが容易になり、変更がある場合の所要時間が短縮されます。審査員は、サイト全体の保守性についてはまだ出ていません。

17
digitaljoel

Spring MVCでは、必要な数のビューテクノロジーを使用できます。 FreeMarker とJSPビューリゾルバがあります。 FreeMarkerでは複雑すぎる(またはJSPでは便利である)ビューに出会ったとき、JSPビューを作成します。たとえば、JSTLを使用したSpringは、フォームを処理する優れた仕事になります。そのために私はJSPビューを使用していますが、他のほとんどすべてにはFreeMarkerビューがあります。

基本的に、いくつかのビューリゾルバーを構成する方法については、Spring MVCのドキュメントをご覧ください。

<bean name="freeMarkerViewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
   <property name="cache" value="true"/>
   <property name="prefix" value=""/>
   <property name="suffix" value=".ftl"/>
   <property name="order" value="1"/> <!--NOTICE THE ORDER-->
</bean>

<bean id="jspViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
    <property name="order" value="2"/> <!--NOTICE THE ORDER-->
</bean>
16
monzonj

Springs 3ドキュメント は、 FreeMarker も提案します。 Freemarkerは(私が知る限り)高速であり、バインディングなどのSpring機能がある程度統合されています。

16
rompetroll

Spring MVCは、多くの異なる view technology との統合を提供します。 FreeMarker または Velocity を使用することをお勧めします。

9
yfrangi

これは古い質問ですが、私は Scalate という新進気鋭の代替案を提供すると思いました。

Scalateはテンプレートオプションの強みです。唯一の問題は、Scalateに多くの依存関係が必要なことです(ScalaはScalaで記述する必要はありません)。

私の現在のお気に入りは Handlebars.Java で、これにはSpring統合があります。

8
Adam Gent

(私の以前の答えは、ここで日付がおかしくなりました。)Freemarkerは、少なくともVelocityと同じくらい良いです。しかし、Thymeleafはさらに魅力的であり、レイアウトを選択することで、sitemeshやタイルなどのテンプレートフレームワークが不要になる可能性があります。 JSFの場合、 Thoughtworksの批判 は有効なようです:

JSF(JavaServer Faces)を使用してチームが問題に直面することを引き続き確認しており、このテクノロジーを避けることを推奨しています。 JSFは、プログラミングモデルが自分に適しているかどうかを実際に評価することなく、Java EE標準であるため、JSFを選択しているようです。基礎となるWebモデルJSFは、ASP.NET Webフォームと同様に、トップHTMLマークアップおよびステートレスHTTPプロトコル上にステートフルコンポーネントツリーを作成しようとします。 JSFの複雑さに対処するのではなく、単純なフレームワークを使用して、以下を含むWebテクノロジーと密接に連携することをお勧めします。 HTTP、HTML、およびCSS。

5
Nathan Hughes

Stripes とSpringを一緒に使用します。ほとんどの場合、ストライプは邪魔になりませんが、必要なときにSpringをうまく拡張します。

3
Quotidian

私は velocity とSpring MVCを使用しています。また、私はGoogle Appエンジンでアプリケーションをホストしていますが、問題はありません。

3
Athens Holloway

Spring MVCのViewレイヤーにAngular(クライアント側フレームワーク))を使用することもできます。

3
ddsultan

Tiles が役立つと思います。
テンプレートを定義し、内部でJSTLを使用できます。

2
amanas

私の提案は、スプリングMVCの上に書かれていない上記のほとんどで説明されているビューフレームワークを見ないことです。なぜなら、このビューテクノロジーからデータを送信できないことを意味するポストバックのような問題になるからですサーバーからの応答を取得します。検証などの例では、サーバーからのデータで更新されるデータ送信を編集しますが機能しません。

これは、ビューテクノロジの上記の一部のBeanはSpringコンテナライフサイクルを使用しないため、Java。Beanは、純粋なビューのステートレスリクエストの例にのみ使用できます。JSFでは、 jsfライフサイクルを使用する場合にのみjsfポストバックが機能するため、ポストバックを使用できます。SpringMVCでSpring Framework JSFビューリゾルバーを使用する場合、ポストバックを実行できないため、Spring MVCコントローラーの代わりにJSFサーブレットコントローラーを交換する必要があります。

繰り返しになりますが、完全なプロジェクト要件は明確ではないため、ポストバック要件が必要ない場合は、上記の選択肢のいくつかを使用できます。

top og spring mvcで記述されているビューテクノロジーの例の1つは、zkフレームワークベースのzk mvcです。この場合、zm GenericForwardComposerからspring mvcコントローラーを拡張してイベントを処理できます。いつでもSpringを使用して、Springフレームワークを使用してこれらのコントローラーのライフサイクルを処理できます。

あなたは似たような他の製品を見つけるためにグーグルすることができます。

このレビューは、フレームワークライフサイクルの高レベル設計に基づいています。

ではごきげんよう !!!

2
Agassis

Apache Velocityは、Java Server Pages。

1
Harshana

phpj についてはどうですか?

ビューテンプレートとして使用することも、Webサーバーシステムを最初から作成することもできます

Phpjを作成したのは、アプリケーションを常に更新してTomcatでロードする必要がないため、これにより、Apacheのような構成を使用してWebアプリケーションの静的な場所を使用できるためです。

1
larsig

Spring Webflowの上でFaceletsを実行できます

1
Tommy B