覆盖Spring Social中的默认重定向视图

Lit*_*ski 4 java twitter spring spring-mvc spring-social

我试图覆盖Spring Social的默认行为,一旦连接到提供商(Twitter,Facebook等),就会重定向到"connect/{providerId} Connected".

所以我试图通过重写受保护的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;
    }

}
Run Code Online (Sandbox Code Playgroud)

请参阅控制器类的文档: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 = [],consume = [],produce = [], 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页面

请帮忙.

Lit*_*ski 7

好的,我自己找到了解决方案.为每个人发布答案,以便任何挣扎于愚蠢事情的人都可能受益:

实际上我在我的配置中配置了ConnectController,现在自定义控制器正在踩踏它,因此它已经说明已映射.从配置中删除配置可以解决问题.

在我的情况下删除以下代码:

<bean class="org.springframework.social.connect.web.ConnectController">
        relies on by-type autowiring for the constructor-args
        <property name="applicationUrl" value="${application.url}" />
    </bean> 
Run Code Online (Sandbox Code Playgroud)