Java 在Spring Social中重写默认重定向视图
我试图覆盖SpringSocial的默认行为,以便在连接到提供商(Twitter、Facebook等)后重定向到“connect/{providerId}Connected” 因此,我试图通过覆盖受保护的java.lang.String connectedView(java.lang.String providerId)方法来覆盖默认行为 因此,我对ConnectController进行了子类化,并尝试覆盖:Java 在Spring Social中重写默认重定向视图,java,spring,spring-mvc,twitter,spring-social,Java,Spring,Spring Mvc,Twitter,Spring Social,我试图覆盖SpringSocial的默认行为,以便在连接到提供商(Twitter、Facebook等)后重定向到“connect/{providerId}Connected” 因此,我试图通过覆盖受保护的java.lang.String connectedView(java.lang.String providerId)方法来覆盖默认行为 因此,我对ConnectController进行了子类化,并尝试覆盖: @Controller public class CustomConnectContr
@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;
}
}
请参阅控制器类的文档:
但我得到了以下错误:
原因: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}],方法=[POST],参数=[],头=[],使用=[],产生=[],自定义=[]:
已存在“customConnectController”bean公共方法
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页面
请帮忙。好的,我自己找到了解决办法。 为每个人发布答案,以便与愚蠢的事情斗争的任何人都可能受益: 实际上,我在配置中配置了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>
依赖于构造函数参数的按类型自动关联
好吧,你做的每件事都是对的,但是忘了添加
@RequestMapping("/connect")
如果您使用的是Spring boot,并且没有和Spring-config.xml文件,您可以使用下面的代码
这段代码帮了我的忙
@Controller
@RequestMapping("/connect")
public class ChangeDefaultFlowController extends ConnectController {
public ChangeDefaultFlowController(ConnectionFactoryLocator connectionFactoryLocator,
ConnectionRepository connectionRepository) {
super(connectionFactoryLocator, connectionRepository);
}
@Override
protected String connectedView(String providerId) {
return "redirect:/"+providerId;
}
}
感谢您自己的回答,我曾试图找出如何使用JavaConfig+spring boot实现此功能,但无法使其正常工作