java - 如何在 Spring 中为 View 路径设置自定义 View 解析器

标签 java spring spring-mvc

我有带有 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/

相关文章:

java - java中设备的自动网络发现

java - 重载子类的构造函数

java - 比较 JSP 中的枚举值

java - 有没有办法在Java中记录失败的Oracle登录名的用户名?

javascript - 将字符串插入 Ag-Grid

java - Hibernate 在一定数量的插入后生成负 id

java - Spring RestTemplate 字符集 UTF-8 不起作用

spring - 使用 Spring MVC 显示数据库中的图像

java - 由于 InternalResourceViewResolver View 名称错误,Spring MVC 返回 404

eclipse - [HTTP :101380]There is more than one Web fragment with the same name: "spring_web"