4

プロバイダー (Twitter、Facebook など) に接続すると、Spring Social のデフォルトの動作をオーバーライドして "connect/{providerId} Connected" にリダイレクトしようとしています。

したがって、メソッドprotected java.lang.String connectedView(java.lang.String providerId)をオーバーライドして、デフォルトの動作をオーバーライドしようとしています。

だから私は ConnectController をサブクラス化し、オーバーライドしようとしました:

@Controller
public class CustomConnectController extends ConnectController{

    @Inject
    public CustomConnectController(
            ConnectionFactoryLocator connectionFactoryLocator,
            ConnectionRepository connectionRepository) {
        super(connectionFactoryLocator, connectionRepository);
    }


    @Override
    protected String connectedView(String providerId){
        //Do some logic

        return "redirect:/foo/bar;
    }

}

コントローラー クラスのドキュメントを参照してください: http://static.springsource.org/spring-social/docs/1.0.x/api/org/springframework/social/connect/web/ConnectController.html

しかし、次のエラーが表示されます。

原因: java.lang.IllegalStateException: あいまいなマッピングが見つかりました。'org.springframework.social.connect.web.ConnectController#0' Bean メソッド public org.springframework.web.servlet.view.RedirectView org.springframework.social.connect.web.ConnectController.connect(java.lang.String) をマップできません,org.springframework.web.context.request.NativeWebRequest) を {[/connect/{providerId}] に、methods=[POST],params=[],headers=[],consumes=[],produces=[], custom=[]}: 既に 'customConnectController' Bean メソッド public org.springframework.web.servlet.view.RedirectView org.springframework.social.connect.web.ConnectController.connect(java.lang.String,org.springframework. web.context.request.NativeWebRequest) がマップされました。

どなたかご指導お願いします。私の要件は次のとおりです。 1. ユーザーがソーシャル アカウント (Twitter、Facebook など) に接続した後 2. ビジネス ロジックを実行する 3. /foo/bar ページにリダイレクトする

助けてください。

4

2 に答える 2

7

Ok, I found the solution myself. Posting the answer for everyone, so that anyone struggling with the silly thing might be benefited:

Actually I had ConnectController configured in my Config & now the custom controller was stepping on that & hence it says already mapped. Removing the config from the config solves the problem.

In my case removing the following code:

<bean class="org.springframework.social.connect.web.ConnectController">
        relies on by-type autowiring for the constructor-args
        <property name="applicationUrl" value="${application.url}" />
    </bean> 
于 2012-10-28T17:08:04.397 に答える