如何在spring中为视图路径设置自定义视图解析器

时间:2014-05-01 17:28:20

标签: java spring spring-mvc

我有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。比春天尝试找到这条路径的视图解析器。我不想为此路径创建视图,而是重定向到另一个视图。我如何处理此路径并为此创建RedirectView? 我可以在我的视图解析器中从此方法获取请求参数吗?

1 个答案:

答案 0 :(得分:1)

通过创建扩展UrlBasedViewResolver并覆盖其中的buildView方法的类,您可以实现重定向到与遗留代码控制器返回的url不同的视图。

    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);
        }
    }

确保此自定义视图解析程序的优先级高于InternalResourceViewResolver。 有关buildView方法的更多信息,请查看here