4

私はSpring3MVCを使用して、共通のレイアウトと頻繁に変更/更新される「コンテンツ」divを持つWebアプリを構築しています。コンテンツマークアップは独自のタイルにあり、ページ全体を更新せずにAJAXを介してそのタイルを更新できるようにしたいと考えています。クライアントからAJAXリクエストを起動し、コントローラーで処理する方法を知っています。Springの構成(ビュー、ビューリゾルバーなど)についてほとんど混乱しています。誰か例がありますか?

4

1 に答える 1

7

基本的に、HTML スケルトンなしで必要なコンテンツのみを含むタイル ビューを作成し、ajax 要求を処理するコントローラーでこのビュー/タイルをレンダリングできます。

foo.jsp というページがあるとします。を呼び出すとhttp://example.com/myapp/foo、本文のコンテンツとして foo.jsp を含む html ページ全体がレンダリングされます。を呼び出すときはhttp://example.com/myapp/ajax/foo、HTML スケルトン全体なしで foo.jsp のみを送信する必要があります。これにより、クライアントは ajax を介してこれをロードし、ページ内の一部を置き換えることができます。

1 つはページ全体に foo.jsp を埋め込むビュー定義で、もう 1 つは foo.jsp 自体のみを含むビュー定義です。app-layout.jsp には、"body" 属性を持つ HTML スケルトン全体が含まれます。

<definition name="foo" template="/WEB-INF/layouts/app-layout.jspx">
    <put-attribute name="body">
        <definition template="/WEB-INF/views/foo.jsp">
            <put-attribute name="message" value="hello"/>
        </definition>
    </put-attribute>
</definition>

<definition name="ajax.foo" template="/WEB-INF/views/foo.jsp">
    <put-attribute name="message" value="hello"/>
</definition>

URL を処理するコントローラー/ajax/fooはビュー "ajax.foo" を/foo返し、URL を処理するコントローラーはビュー "foo" を返します。

@Controller
@RequestMapping("/ajax")
public void class AjaxController {
   @RequestMapping("/foo")
   public String foo() {
       return "ajax.foo";
   }
}

@Controller
@RequestMapping("/")
public void class AppController {
   @RequestMapping("/foo")
   public String foo() {
       return "foo";
   }
}
于 2012-08-31T07:50:16.837 に答える