jasonfzq 2024-07-10 15:02 采纳率: 40%
浏览 2

多InternalResourceViewResolver下的多路径映射

请问如果我要实现对于同一后缀的不同映射路径,应该怎么做。

若按照如下的进行order设置,只会映射第一个。

是要使用addResourceHandlers吗。


package com.configuration;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;


@Configuration
@EnableWebMvc
@ComponentScan("com.controller")
public class MvcConfig implements WebMvcConfigurer {
    @Bean
    public InternalResourceViewResolver viewResolver1(){
        InternalResourceViewResolver viewResolver=new InternalResourceViewResolver();

        viewResolver.setPrefix("/WEB-INF/classes/");
        viewResolver.setSuffix(".jsp");
        viewResolver.setViewClass(JstlView.class);
        viewResolver.setOrder(1);
        return viewResolver;
    }
    @Bean
    public InternalResourceViewResolver viewResolver2(){
        InternalResourceViewResolver viewResolver=new InternalResourceViewResolver();

        viewResolver.setPrefix("/WEB-INF/classes/views/");
        viewResolver.setSuffix(".jsp");
        viewResolver.setViewClass(JstlView.class);
        viewResolver.setOrder(0);
        return viewResolver;
    }


}

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-07-10 15:02
    关注

    引自免费微信小程序:皆我百晓生

    对于你的问题,关于Spring框架中如何使用InternalResourceViewResolver来处理多路径映射,确实可以通过配置多个InternalResourceViewResolver bean来实现。但是在配置中需要注意几点来确保多个路径都能被正确处理。

    在你的配置类中,你已经定义了两个InternalResourceViewResolver bean,分别为viewResolver1viewResolver2。按照你的设置,viewResolver2的优先级(order)高于viewResolver1。这意味着当请求一个视图时,Spring会首先尝试使用viewResolver2来解析。如果找不到对应的视图,它会尝试使用viewResolver1。因此,你的配置逻辑是正确的。

    如果你发现只有第一个配置(viewResolver1)被映射,可能是因为你的应用只请求了匹配第一个解析器前缀的路径。要解决这个问题,你可以检查以下几点:

    1. 确保你的控制器中的视图名称正确地对应了这两个前缀。例如,如果你有一个控制器返回一个视图名为"someView",它应该匹配/WEB-INF/classes/下的某个JSP文件或/WEB-INF/classes/views/下的某个JSP文件。
    2. 确保你的项目结构和部署是正确的,JSP文件应该放在正确的目录下。
    3. 如果你使用了其他视图解析器或拦截器,它们可能会影响视图的解析过程。确保这些组件不会干扰你的多路径映射配置。

    关于使用addResourceHandlers来处理资源映射,这是Spring MVC配置中的一个选项,用于添加额外的资源处理器来定义资源的映射规则(如静态资源的映射)。如果你的问题主要是关于视图解析而不是资源映射,那么你可能不需要使用这个方法。但是如果你需要配置静态资源的映射,可以考虑使用addResourceHandlers

    总结一下,你的配置应该是正确的,只要确保视图名称与配置的前缀匹配,并且没有其他组件干扰视图解析过程,你应该能够实现多路径映射。如果仍然遇到问题,建议检查项目的其他配置和代码部分。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月10日

悬赏问题

  • ¥15 mmo能不能做客户端怪物
  • ¥15 osm下载到arcgis出错
  • ¥15 Dell g15 每次打开eiq portal后3分钟内自动退出
  • ¥200 使用python编写程序,采用socket方式获取网页实时刷新的数据,能定时print()出来就行。
  • ¥15 matlab如何根据图片中的公式绘制e和v的曲线图
  • ¥15 我想用Python(Django)+Vue搭建一个用户登录界面,但是在运行npm run serve时报错了如何解决?
  • ¥15 QQ邮箱过期怎么恢复?
  • ¥15 登录他人的vue项目显示服务器错误
  • ¥15 (标签-android|关键词-app)
  • ¥15 comsol仿真压阻传感器