我刚刚使用Wicked框架构建了一个非常简单的Java Web应用程序。该项目的当前布局是:
src/
main/
java/
net/myapp/
Homepage.java
Homepage.html
reources/
scripts/
script.js
在Homepage.html
文件中,我正在尝试加载JavaScript文件:
<script src="scripts/script.js"></script>
我部署了应用程序,但浏览器找不到JavaScript文件。
使用maven-war-plugin打包WAR文件。我查看了WAR文件,我看到了以下布局:
WEB-INF/
classes/
net/myapp/
Homepage.class
Homepage.html
scripts/
script.js
我做错了什么?我错过了什么?
答案 0 :(得分:7)
与网络相关的资源应放在src/main/webapp
答案 1 :(得分:3)
您的目录结构应为:
WEB-INF/ classes/ net/myapp/ Homepage.class Homepage.html net/myapp/scripts/ script.js
你的标记应该是:
<wicket:link><script src="scripts/script.js"></script></wicket:link>
答案 2 :(得分:3)
WEB-INF文件夹后面的资源不公开。如果Homepage.class转发到Homepage.html,那么你应该看到那么好。但是在HTML页面中,您引用了javascript文件,该文件不公开。您需要将脚本移到WEB-INF之外。结构应该看起来像
WEB-INF /
classes /
net/myapp/
Homepage.class
Homepage.html
scripts/
scripts.js
这样在html文件中引用
<script src="scripts/script.js"></script>
将正常运作。当HTML页面在用户端呈现时,它们将进行回调以获取JavaScript资源。此时,文件需要可见。
您的构建脚本或应用布局的更新应该为您解决此问题。
编辑:请参阅Bozho的回答,它将修复Maven的构建。见This link for Maven
答案 3 :(得分:2)
虽然其他答案一般都是正确的,但他们并没有考虑到Wicket。使用Wicket,可以在类路径上拥有资源,在某些情况下,它们比静态文件更好。
您可以使用Application.mountSharedResource()
为共享资源分配网址,该资源可以来自任何地方,包括您的类路径。
答案 4 :(得分:-1)
没有s的拼写资源?
reources/