Java / Wicket: compiling basic Hello World with resources

I follow this example of a Hello World Wicket application

https://www.ibm.com/developerworks/web/library/wa-aj-wicket/

In particular, I placed HelloWorld.html in my source directory next to HelloWorld.java .

My file structure is as follows:

 $ 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 

However, when I compile this into a war file and load it into Jetty, I get this error in the browser:

 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) 

When I look in the war file, I notice that the html file is missing:

 $ 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 

How to specify in my POM file to include an html file?

My POM is now minimal:

 <?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> 
+7
java maven wicket
source share
2 answers

The solution is if you want your HTML code at the best practice gate site (with your classes) to add this to your pom's build section.

 <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> 
+17
source share

You must place the HelloWorld.html file in the src/main/webapp folder. Thus, it will be included in the military file

+1
source share

All Articles