Должен ли я поместить html и java файлы в один пакет (папку) в Apache Wicket? - PullRequest
4 голосов
/ 08 ноября 2008

Интересно, есть ли пример, где html-файлы и java-файлы находятся в разных папках?

Ответы [ 6 ]

10 голосов
/ 08 ноября 2008

Я не рекомендую использовать отдельный каталог страниц, если вы не совсем довольны работой потоков ресурсов, а я нет.

Подавляющее большинство проектов калитки, которые я видел, хранят файлы классов и 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 имеет учебник по этому вопросу.

3 голосов
/ 29 ноября 2008

Я использую Maven (как указано выше) и обычно помещаю все мои .html страницы в src/main/resources/same/package/name/as/corresponding/java/file

Я считаю, что это хорошо работает, так как мои дизайнеры могут извлекать базовый пакет из папки ресурсов, и они не путаются со всеми файлами .java (и, что более важно, они не меняют их случайно)

Я сделал сообщение в список рассылки , если вы заинтересованы.

2 голосов
/ 10 июня 2010

Я не фанат наличия файлов 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

1 голос
/ 16 января 2009

Я использую отдельные папки для моих исходных файлов калитки 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>    
0 голосов
/ 12 июня 2010

Я бы поместил файлы Java и HTML в одну папку. Это сделало бы намного более удобным выбор файла HTML, соответствующего классу Java. Рассматривайте HTML-файл компонентов как своего рода описание пользовательского интерфейса, которое в противном случае было бы написано на Java (как в Swing).

0 голосов
/ 10 ноября 2008

Это одна из областей, где использование Maven для управления вашим проектом очень приятно. Поскольку Maven имеет два местоположения, которые включены в classpath, вы можете логически разделить исходный код Java и файлы HTML, и при этом они будут поддерживать одинаковую структуру пакета. Java-код попадает в src / main / java, а HTML-код - в src / main / resources. При построении или запуске кода оба эти местоположения добавляются в путь к классам.

Если Maven не для вас, возможно, эту идею можно применить к любой среде, которую вы используете.

...