我有带有 Controller 的lib(spring-social),它具有以下代码:
@RequestMapping(value="/{providerId}", method=RequestMethod.GET)
public String connectionStatus(@PathVariable String providerId, NativeWebRequest request, Model model) {
setNoCache(request);
processFlash(request, model);
List<Connection<?>> connections = connectionRepository.findConnections(providerId);
setNoCache(request);
if (connections.isEmpty()) {
return connectView(providerId);
} else {
model.addAttribute("connections", connections);
return connectedView(providerId);
}
}
此代码的返回 - 类似/connect/twitterConnected 的路径。比 spring 尝试找到此路径的 View 解析器。我不想为此路径创建 View ,而是重定向到另一个 View 。我如何处理此路径并为此创建 RedirectView? 我可以在 View 解析器中从此方法获取请求参数吗?
最佳答案
通过创建一个扩展 UrlBasedViewResolver 的类并重写其中的 buildView 方法,您可以实现重定向到与从旧代码 Controller 返回的 url 不同的 View 。
public class CustomizedViewResolver extends UrlBasedViewResolver {
@Override
protected AbstractUrlBasedView buildView(String viewName) throws Exception {
String newViewName;
if(viewName.equals("YourLegacyCodeViewName")){
newViewName = "ViewNameYouWantToRedirect";
}else{
newViewName = viewName;
}
return super.buildView(newViewName);
}
}
确保此自定义 View 解析器的优先级高于InternalResourceViewResolver。 有关 buildView 方法的更多信息,请查看 here .
关于java - 如何在 Spring 中为 View 路径设置自定义 View 解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23413009/