CSS 文件无法使用 Wicket 刷新(通过 Start.java 在 Intellij 中启动)
-
21-08-2019 - |
题
我已经使用创建了一个骨架 Wicket 项目
mvn archetype:create -DarchetypeGroupId=org.apache.wicket -DarchetypeArtifactId=wicket-archetype-quickstart -DarchetypeVersion=1.4-rc4 -DgroupId=com.mycompany -DartifactId=myproject
使用 Maven/Intellij 的所有配置/导入新项目都工作正常。我继续按照以下建议的方式在 Wicket 1.4 中将基本 CSS 文件添加到我的起始页
public class BasePage extends WebPage {
public BasePage() {
add(CSSPackageResource.getHeaderContribution(BasePage.class, "main.css"));
}
}
main.css 文件已与 BasePage.java 和 BasePage.html 一起放在 /src/main/java 中。我使用 Start.java 启动该应用程序。问题是当我对 CSS 文件进行更改时,当我重新启动 Start.java 时,它不会被拾取。(当我更改java和html文件时,它们的更改也会更新)
我确保浏览器缓存被清除,甚至验证了 Firfox/Firebug 中的请求/响应。似乎介于 Wicket 的魔力和 Start.java 创建的 Jetty 实例之间,CSS 文件被缓存且未更新。有任何想法吗?
解决方案
我移动的css文件到/ webapp目录并似乎得到解决,以Start.java登记变更的问题。我做同样的JS文件和图像。奇怪的是,我已经阅读(不同地区)的人以不同的方式做这个(虽然HTML和Java类的共识总是让他们在同一个地方)。
其他提示
我找到了另一个对我有帮助的解决方案。您可以配置 Wicket 为资源请求添加时间戳,以解决缓存问题。在应用程序类的 init 方法中调用资源设置的 setAddLastModifiedTimeToResourceReferenceUrl 。
public class MyApplication extends WebApplication {
@Override
protected void init() {
getResourceSettings().setAddLastModifiedTimeToResourceReferenceUrl(true);
}
}
不隶属于 StackOverflow