【问题标题】:how to set custom view resolver for view path in spring如何在春季为视图路径设置自定义视图解析器
【发布时间】:2014-05-02 03:18:15
【问题描述】:

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

【问题讨论】:

  • redirect: 不能满足您的需求吗?
  • @chrylis,这是库代码,我无法修复

标签: java spring spring-mvc


【解决方案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

【讨论】:

    猜你喜欢
    • 2018-03-10
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 2020-02-20
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多