我正在按照Hello World Wicket应用程序的此示例进行操作
https://www.ibm.com/developerworks/web/library/wa-aj-wicket/
特别是,我将HelloWorld.html
放在HelloWorld.java
旁边的源目录中。
我的文件结构如下所示:
$ tree
.
├── pom.xml
├── src
│ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── example
│ │ │ └── wicket
│ │ │ ├── HelloWorld.html
│ │ │ ├── HelloWorld.java
│ │ │ └── HelloWorldApplication.java
│ │ ├── resources
│ │ └── webapp
│ │ └── WEB-INF
│ │ └── web.xml
│ └── test
│ └── java
└── wicketTest.iml
但是,当我将其编译为war文件并加载到Jetty中时,我在浏览器中收到此错误:
Unexpected RuntimeException
Last cause: Can not determine Markup. Component is not yet connected to a parent. [Page class = com.example.wicket.HelloWorld, id = 4, render count = 1]
Stacktrace
Root cause:
org.apache.wicket.markup.MarkupNotFoundException: Can not determine Markup. Component is not yet connected to a parent. [Page class = com.example.wicket.HelloWorld, id = 4, render count = 1]
at org.apache.wicket.Component.getMarkup(Component.java:737)
at org.apache.wicket.Component.internalRender(Component.java:2344)
at org.apache.wicket.Component.render(Component.java:2307)
at org.apache.wicket.Page.renderPage(Page.java:1010)
当我查看war文件时,我注意到html文件丢失了:
$ tar tvf target/wicketTest-1.0-SNAPSHOT.war
drwxrwxrwx 0 0 0 0 Aug 22 14:50 META-INF/
-rwxrwxrwx 0 0 0 128 Aug 22 14:50 META-INF/MANIFEST.MF
drwxrwxrwx 0 0 0 0 Aug 22 14:50 WEB-INF/
drwxrwxrwx 0 0 0 0 Aug 22 14:50 WEB-INF/classes/
drwxrwxrwx 0 0 0 0 Aug 22 14:50 WEB-INF/classes/com/
drwxrwxrwx 0 0 0 0 Aug 22 14:50 WEB-INF/classes/com/example/
drwxrwxrwx 0 0 0 0 Aug 22 14:50 WEB-INF/classes/com/example/wicket/
drwxrwxrwx 0 0 0 0 Aug 22 14:50 WEB-INF/lib/
-rwxrwxrwx 0 0 0 608 Aug 22 14:50 WEB-INF/classes/com/example/wicket/HelloWorld.class
-rwxrwxrwx 0 0 0 551 Aug 22 14:50 WEB-INF/classes/com/example/wicket/HelloWorldApplication.class
-rwxrwxrwx 0 0 0 25962 Aug 21 16:07 WEB-INF/lib/slf4j-api-1.6.4.jar
-rwxrwxrwx 0 0 0 2126440 Aug 21 16:07 WEB-INF/lib/wicket-core-6.10.0.jar
-rwxrwxrwx 0 0 0 86671 Aug 21 16:07 WEB-INF/lib/wicket-request-6.10.0.jar
-rwxrwxrwx 0 0 0 415858 Aug 21 16:07 WEB-INF/lib/wicket-util-6.10.0.jar
-rwxrwxrwx 0 0 0 690 Aug 22 13:22 WEB-INF/web.xml
drwxrwxrwx 0 0 0 0 Aug 22 14:50 META-INF/maven/
drwxrwxrwx 0 0 0 0 Aug 22 14:50 META-INF/maven/wicketTest/
drwxrwxrwx 0 0 0 0 Aug 22 14:50 META-INF/maven/wicketTest/wicketTest/
-rwxrwxrwx 0 0 0 675 Aug 22 08:52 META-INF/maven/wicketTest/wicketTest/pom.xml
-rwxrwxrwx 0 0 0 112 Aug 22 14:50 META-INF/maven/wicketTest/wicketTest/pom.properties
如何在我的POM文件中指定包含html文件?
我现在的POM很小:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>wicketTest</groupId>
<artifactId>wicketTest</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-core</artifactId>
<version>6.10.0</version>
</dependency>
</dependencies>
</project>
最佳答案
如果您想将HTML放在wicket最佳实践位置(以及您的类),解决方案是将其添加到pom的build部分。
<build>
<resources>
<resource>
<filtering>false</filtering>
<directory>src/main/resources</directory>
</resource>
<resource>
<filtering>false</filtering>
<directory>src/main/java</directory>
<includes>
<include>**</include>
</includes>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
</build>
</project>