我应该将html和java文件放在Apache Wicket的同一个包(文件夹)中吗?

我想知道是否有一个例子,html文件和java文件驻留在不同的文件夹中。

我不建议使用单独的页面目录,除非您对资源流的工作方式非常熟悉,我不是。

我见过的绝大多数wicket项目都将class和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文件混淆(更重要的是,它们不会意外地改变它们!)

如果您有兴趣,我会在邮件列表上发post 。

我不喜欢让HTML文件驻留在src/main/resources文件夹中。 我认为处理这个并在版本控制和项目中获得清晰分离的最简单方法是使用perilandmishap链接的Wicket文章中的最后一个设置:

  [...]    false src/main/html   [...]  [...]  

因此,现在所有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 

并且编译/汇编ant目标看起来像

                      

这是使用Maven管理项目的一个领域非常好。 由于Maven有两个包含在类路径中的位置,因此您可以在逻辑上将Java源文件和HTML文件分开,并使它们保持相同的包结构。 Java代码进入src / main / java,HTML进入src / main / resources。 构建或运行代码时,这两个位置都会添加到类路径中。

如果Maven不适合您,也许这个想法可以适用于您正在使用的任何环境。

我会将Java和HTML文件放在同一个文件夹中。 这样可以更轻松地选择与Java类相对应的HTML文件。 将组件HTML文件视为一种UI描述,否则将用Java编写(与Swing一样)。