繁体   English   中英

Spring 4-MVC-URL参数和静态资源路径

[英]Spring 4 - MVC - URL param and static resource path

我有一个spring mvc应用程序,在页面中,我在表中列出了从数据库中获取的“组”详细信息。 每个组的url设置为“ / viewgroup / 410”,其中410是将从数据库中加载并显示在viewgroup.jsp页面中的groupid。

<td><a href="viewgroup/${group.groupid}">${group.name}</a></td>

因此,控制器方法具有

@RequestMapping("/viewgroup/{groupid}") 
public String viewGroup() {
    ...
}

像这样。 JSP页面无法加载目录结构中的静态资源

+webapp
  +resources
     +css
     +js
     +images
  +views
    +login.jsp

jsp页面具有image / js / css的以下路径。

<link href="resources/css/bootstrap.css" rel="stylesheet" media="screen">

我尝试添加

@Controller
@RequestMapping("/viewgroup/**")
public class ViewGroupController {
   ...
}

这在jsp中

<link href="viewgroup/resources/css/bootstrap.css" rel="stylesheet" media="screen">

仍然,jsp页面加载无法加载静态资源。 当我在url中传递参数时,如何在jsp页面中提供静态资源的资源路径?

您通过项目的任何URL传递查询参数的事实并不影响其处理静态资源的方式。 您只需要包括指向静态资源的链接(例如,作为相对路径),如下所示:

<link href="/resources/css/bootstrap.css" rel="stylesheet" media="screen">

此类静态资源的分辨率完全独立于您当前正在查看的页面,无论是/viewgroup/410还是/foo/bar 这就是为什么链接的href开头不需要“视图组”的原因。

但是您确实需要告诉Spring MVC它应该如何处理此类静态资源。 通常,这是在Spring配置中完成的。 例如,如果通过WebMvcConfigurer实例使用Spring MVC java config,则应以以下方式覆盖addResourceHandlers方法:

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
    }


编辑:我不好,我认为Spring MVC +任何视图技术(JSP,Thymeleaf等)都会根据Web应用程序的根路径自动解析链接的href,但这显然不适用于解析相对链接的href的原始HTML反对当前的道路。 因此,最后,如OP所见,只有使用正在使用的视图技术处理链接时,才可以针对根路径解析链接(在使用JSP的示例中: <c:url value="/resources/css/bootstrap.css"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM