2011-12-09 4 views
1

現在、私たちはSpringで作成されたデスクトップとモバイル版のサイトを持つプロジェクトに取り組んでいます。Springでカスタムハンドラインタセプタを使用するデバイスに基づいてモバイルサイトにユーザをリダイレクトする最良の方法

私たちは、Springモバイルを使用して、そのデバイスがモバイルかどうかを検出し、Springサイトのプリファレンスパラメータを使用する可能性があります。

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

私はHandlerInterceptorを使ってサイト内のspecficディレクトリにリダイレクトすると思っています。たとえば "/ jsp/mobile /"です。

1)この拡張HandlerInterceptorでは、preHandleメソッドでSpring Mobileデバイス検出器を使用できますか?

2)リダイレクトするにはどうすればよいですか? a)単にHTTPレスポンスを使用するか、b)何らかの形でviewResolverを変更し、プレフィックスを/ jsp/mobile /から/jsp/mobile/に変更する

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

乾杯

+0

http://stackoverflow.com/q/8433274/106261 – NimChimpsky

答えて

1

私は現在、事前ハンドラメソッドでHandlerInterceptorを使用していますが、アプリケーションがモバイルデバイスであるかどうかの評価を行い、モバイルデバイスから来る場合は、この方法によってrequestUriは、現在のアドレスと場所を取得しますアプリケーションコンテキストの名前の後ろに接頭辞「m」を付けます。次にリダイレクトします:問題は、このインターセプタはすべての要求をインターセプトすることを

response.sendRedirect( "/アプリケーション/ M/.....")(documentation

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

ですしたがって、それは次のように評価する必要がある:要求のようなパスが付属している場合

  1. 「/アプリケーション/ M/.....」、すなわちモバイルデバイスから来ているかどうかを検証しませbecaus E「M」とあなたは要求がモバイルデバイスから(モバイル版と通常のシェアこれらのリソースを)来た場合、インターセプタはリダイレクトしてはならないスプリングハンドル静的リソースを許可すれば、それは私に

  2. をして言う

1

お返事ありがとうございます。私がやったことはHandlerInterceptorを使用しているので、同様にポストhandleメソッドにビュー名を変更:

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

プラスそれはコンストラクタにDeviceResolverを注入することにより、デバイスがモバイルであるか否かがあれば、他のagainsに包まれてローカルデバイスを解決します。

関連する問題