1

我有这个目录结构:

webapp
 - resources
   - custom.js
   - base.css
 - WEB-INF
 - views
   - layout.vm
   - top.vm
   - footer.vm
   - index.vm
   - FolderA
     - restricted.vm

我的 layout.vm 是:

#parse('top.vm')
$screen_content
#parse('footer.vm')

我的 top.vm 包括这些 JS 和 CSS 文件:

<link href="resources/base.css" rel="stylesheet">
<script src="resources/custom.js"></script>

现在,当我访问http://www.example.com:8080/index页面时,我看到找到了 JS 和 CSS 文件。但是当我访问http://www.example.com:8080/FolderA/restricted时,找不到 JS 和 CSS 文件。它在我改变它的顶部时有效

但是随后索引页被破坏了。

我正在使用弹簧控制器返回适当的视图。例如,以下返回索引页面:

@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Model model) {       
    return "index";
}

这将返回受限视图:

@Controller
@RequestMapping(value = "/FolderA")
public class SomeController {

    @RequestMapping(value = "", method = RequestMethod.GET)
    public String secured(Model model) {

        return "FolderA/restricted";
    }

关于如何解决此问题的任何建议?

附带说明一下,我在使用常规 jsp 文件时也遇到了这个问题,但我设法使用<c:url ..>. 我不知道这如何以速度解决。

4

1 回答 1

2

那是因为您声明的资源与用于访问视图的 url 相关。您必须将所有静态资源 url 更改为绝对您可以使用标记执行此操作

从此改变

<script src="resources/custom.js"></script>

<script src="<c:url value="/resources/custom.js"/>"></script>

这应该在 HTML 中生成类似这样的内容

<script src="<c:url value="http://www.example.com:8080/FolderA/resources/custom.js"/>">
</script>

注意但是为了让这个工作你应该添加 %@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>到你的jsp并将jst标签库包含到webapp中

编辑 - - -

对于JS和CSS文件里面提到的路径,有一个变通办法。使用base标签来定义HTML中需要使用的绝对路径标签

<base href="http://www.example.com:8080/FolderA/">
于 2013-02-27T08:13:20.587 回答