Должен ли я помещать файлы html и java в один и тот же пакет (папку) в Apache Wicket?

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
4
0
5 978
6

Ответы 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 для управления вашим проектом очень удобно. Поскольку у 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).

Другие вопросы по теме