



Я не рекомендую использовать отдельный каталог страниц, если вам не очень хорошо известно, как работают потоки ресурсов, а я нет.
Подавляющее большинство проектов калитки, которые я видел, хранят файлы классов и 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 для управления вашим проектом очень удобно. Поскольку у Maven есть два местоположения, которые включены в путь к классам, вы можете логически разделить исходный код Java и файлы HTML и при этом сохранить одну и ту же структуру пакета. Код Java переходит в src / main / java, а HTML - в src / main / resources. При сборке или запуске кода оба этих местоположения добавляются в путь к классам.
Если Maven не для вас, возможно, эту идею можно применить к любой среде, которую вы используете.
Я использую Maven (как указывает вышеупомянутый пользователь) и обычно помещаю все свои страницы .html в src/main/resources/same/package/name/as/corresponding/java/file.
Я считаю, что это прекрасно работает, так как мои дизайнеры могут получить базовый пакет из папки ресурсов, и их не смущают все файлы .java (и, что более важно, они не меняют их случайно!)
Я сделал отправить в список рассылки, если вам интересно.
Я использую отдельные папки для исходных файлов java и html калитки, но мой процесс сборки ant затем копирует html в папку классов моего веб-приложения, поэтому я избегаю проблем с настройкой параметров ресурсов калитки.
В моем базовом 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
и цели компиляции / сборки муравьев выглядят как
<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>
Я не сторонник того, чтобы файлы HTML находились в папке src/main/resources. Я думаю, что самый простой способ справиться с этим и получить четкое разделение в управлении версиями и в вашем проекте - использовать последнюю настройку в статья Wicket, связанную с perilandmishap:
<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 в одну папку. Так было бы намного удобнее выбрать файл HTML, соответствующий классу Java. Думайте о HTML-файле компонентов как о разновидности описания пользовательского интерфейса, которое иначе было бы написано на Java (как в Swing).