java在Spring Social中重写默认重定向视图
我试图覆盖SpringSocial的默认行为,以便在连接到提供商(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;
}
}
但我得到了以下错误:
Caused by: java.lang.IllegalStateException: Ambiguous mapping found. Cannot map 'org.springframework.social.connect.web.ConnectController#0' bean method public org.springframework.web.servlet.view.RedirectView org.springframework.social.connect.web.ConnectController.connect(java.lang.String,org.springframework.web.context.request.NativeWebRequest) to {[/connect/{providerId}],methods=[POST],params=[],headers=[],consumes=[],produces=[],custom=[]}: There is already 'customConnectController' bean method public org.springframework.web.servlet.view.RedirectView org.springframework.social.connect.web.ConnectController.connect(java.lang.String,org.springframework.web.context.request.NativeWebRequest) mapped.
谁能给我引路。 我的要求如下: 1.用户连接社交账户(Twitter、Facebook等)后 2.做一些业务逻辑 3.重定向到/foo/bar页面
请帮忙
# 1 楼答案
好的,我自己找到了解决办法。 为每个人发布答案,以便任何与愚蠢的事情斗争的人都可能受益:
实际上,我在配置中配置了ConnectController&;现在,定制控制器正踩在上面&;因此它说已经绘制了地图。从配置中删除配置可以解决这个问题
在我的例子中,删除以下代码:
# 2 楼答案
好吧,你做的每件事都是对的,但你忘了补充
如果您使用的是Spring boot,并且没有和Spring配置。您可以使用以下代码的xml文件
这个密码帮了我的忙
This Link offers more explanation on changing the redirect flow to page or another rest controller