1

現在、Springで作成されたデスクトップ版とモバイル版のサイトを含むプロジェクトに取り組んでいます。モバイル版とデスクトップ版で同じSpringセキュリティシステムなどを共有したい。

Spring mobileを使用して、デバイスがモバイルであるかどうかを検出しています。Springサイト設定パラメーターを使用している可能性があります。

Springモバイルリダイレクターは別のドメイン(m.website.comなど)にリダイレクトされているように見え、同じSpringセキュリティを簡単に使用できないため、Springモバイルリダイレクターは使用しません。

だから私は、HandlerInterceptorを使用して、サイト内の特定のディレクトリ(たとえば、「/ jsp / mobile /」)にリダイレクトすることを考えています。

1)この拡張されたHandlerInterceptorで、preHandleメソッドでSpring Mobileデバイス検出器を使用することは可能ですか?

2)リダイレクトするための最良の方法は何ですか?a)http応答を使用するだけですか、それともb)viewResolverを変更して、プレフィックスを「/jsp/」から「/jsp/mobile/」に変更するのですか。

長い質問で申し訳ありませんが、私たちがやろうとしていることについて、できるだけ多くの情報を入れたいと思いました!

乾杯

4

2 に答える 2

1

私は現在、プレハンドラーメソッドでHandlerInterceptorを使用しており、アプリケーションがモバイルデバイスであるかどうかを評価します。モバイルデバイスからの場合は、requestUriメソッドを使用して、現在のアドレスを取得し、名前の後にプレフィックス「m」を付けます。アプリケーションコンテキスト。次に、リダイレクトを実行します。

response.sendRedirect( "/ application / m / .....")(ドキュメント

/application/user           //recived
/application/m/user         //sent

問題は、このインターセプターがすべての要求をインターセプトすることです。したがって、以下を評価する必要があります。

  1. リクエストに「/application/ m / .....」のようなパスが含まれている場合は、モバイルデバイスからのパスであることを確認しないでください。

  2. Springに静的リソースを処理させる場合、リクエストがモバイルデバイスからのものである場合、インターセプターはリダイレクトしてはなりません(モバイルバージョンと通常はこれらのリソースを共有します)

于 2011-12-19T04:41:34.033 に答える
1

答えてくれてありがとう。私が行ったことは、HandlerInterceptorを使用し、posthandleメソッドのビュー名を次のように変更したことです。

if (modelAndView.getViewName() != null)
{
    modelAndView.setViewName("/mobile/" + modelAndView.getViewName());
}
else
{
    modelAndView.setViewName("/mobile/");
}

さらに、DeviceResolverをコンストラクターに挿入し、ローカルデバイスを解決することにより、デバイスがモバイルであるかどうかに関係なく、ifelseでラップされます。

于 2011-12-22T12:30:48.457 に答える