【问题标题】:Should I put html and java files in the same package (folder) in Apache Wicket?我应该将 html 和 java 文件放在 Apache Wicket 的同一个包(文件夹)中吗?
【发布时间】:2016-10-04 16:02:12
【问题描述】:

我想知道是否有一个示例,其中 html 文件和 java 文件位于不同的文件夹中。

【问题讨论】:

    标签: java wicket


    【解决方案1】:

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

    我见过的绝大多数检票口项目都将类和 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 有这方面的教程。

    【讨论】:

      【解决方案2】:

      我使用 Maven(正如上面的用户指出的那样)并且通常将我所有的 .html 页面放在 src/main/resources/same/package/name/as/corresponding/java/file

      我发现这很好用,因为我的设计人员可以从资源文件夹中检出基础包,而且他们不会被所有 .java 文件弄糊涂(更重要的是,他们不会意外更改它们!)

      如果你有兴趣,我发了post to the mailing list

      【讨论】:

        【解决方案3】:

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

        <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

        【讨论】:

          【解决方案4】:

          我为我的 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 目标看起来像

          <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>    
          

          【讨论】:

            【解决方案5】:

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

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

            【讨论】:

              【解决方案6】:

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2013-04-04
                • 1970-01-01
                • 1970-01-01
                • 2023-03-17
                • 2021-01-21
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多