我想知道是否有一个示例,其中 html 文件和 java 文件位于不同的文件夹中。
6 回答
我不建议使用单独的页面目录,除非您对资源流的工作方式非常熟悉,而我不是。
我见过的绝大多数检票口项目都将类和 html 文件保存在源目录中。我尝试自己将它们分开,但后来发现获取其他资源(例如图像等)很麻烦。所以,我最终把这些资源放在了包目录中——最后我在几个不同的地方都有资源,这比把所有东西都放在包目录中要混乱得多。
也就是说,这是我用来将我的 html 模板放在单独的文件夹中的代码。它应该被添加到您的应用程序类中的 Init() 中。
IResourceSettings resourceSettings = getResourceSettings();
resourceSettings.addResourceFolder("pages"); //the full path to your folder, relative to the context root
resourceSettings.setResourceStreamLocator((IResourceStreamLocator) new PathStripperLocator());
https://cwiki.apache.org/confluence/display/WICKET/Control+where+HTML+files+are+loaded+from对此有教程。
我使用 Maven(正如上面的用户指出的那样)并且通常将我所有的 .html 页面放入src/main/resources/same/package/name/as/corresponding/java/file
我发现这很好用,因为我的设计人员可以从资源文件夹中检出基本包,并且他们不会被所有 .java 文件弄糊涂(更重要的是,他们不会意外更改它们!)
如果您有兴趣,我会在邮件列表中发帖。
我不喜欢将 HTML 文件放在src/main/resources
文件夹中。我认为处理此问题并在版本控制和项目中获得清晰分离的最简单方法是使用perilandmishap 链接的 Wicket 文章中的最后一个设置:
<project>
[...]
<build>
<resources>
<resource>
<filtering>false</filtering>
<directory>src/main/html</directory>
</resource>
</resources>
[...]
</build>
[...]
</project>
因此,现在您的所有 HTML 文件都将位于新的、单独的 HTML 文件夹中,但仍与您的 Java 类合并。请记住,您仍然会在 HTML 文件夹中使用包命名方案,即src/main/html/com/your/package
我为我的 java 和 html wicket 源文件使用单独的文件夹,但是我的 ant 构建过程然后将 html 复制到我的 web 应用程序的 classes 文件夹,这样我就避免了必须设置 wicket 资源设置的问题。
我的基本 build.properties 有
web.root = ${project.home}/web
web.java.dir = ${web.root}/java
web.html.dir = ${web.root}/html
war.root = ${project.home}/war
web.inf.dir = ${war.root}/WEB-INF
war.lib.dir = ${web.inf.dir}/lib
war.classes.dir = ${web.inf.dir}/classes
wicket.version = 1.3.5
wicket.jar = ${war.lib.dir}/wicket-${wicket.version}.jar
wicket-extend.jar = ${war.lib.dir}/wicket-extensions-${wicket.version}.jar
wicket-spring.jar = ${war.lib.dir}/wicket-spring-${wicket.version}.jar
和 compile / assemble ant 目标看起来像
<target name="compile-web">
<path id="wicket.build.classpath">
<filelist>
<file name="${wicket.jar}"/>
<file name="${wicket-extend.jar}"/>
<file name="${wicket-spring.jar}"/>
<file name="${externaljars.path}/spring/2.5.6/spring.jar"/>
</filelist>
</path>
<javac destdir="${war.classes.dir}" classpathref="wicket.build.classpath"
debug="on" srcdir="${web.java.dir}">
<include name="**/*.java"/>
</javac>
</target>
<target name="assemble-war" depends="compile-web">
<copy todir="${war.classes.dir}" overwrite="true">
<fileset dir="${web.html.dir}"/>
</copy>
<delete file="${dist.dir}/validationservice.war"/>
<war destfile="${dist.dir}/validationservice.war" webxml="${web.inf.dir}/web.xml" basedir="${war.dir}">
</war>
</target>
这是使用 Maven 管理项目的一个非常好的领域。由于 Maven 在类路径中包含两个位置,因此您可以在逻辑上将 Java 源文件和 HTML 文件分开,并且仍然让它们保持相同的包结构。Java 代码进入 src/main/java,HTML 进入 src/main/resources。在构建或运行代码时,这两个位置都会添加到类路径中。
如果 Maven 不适合您,那么这个想法可能适用于您使用的任何环境。
我会将 Java 和 HTML 文件放在同一个文件夹中。这将使选择与 Java 类对应的 HTML 文件更加舒适。将组件 HTML 文件视为一种 UI 描述,否则将使用 Java(如 Swing)编写。