Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
1.5-RC2
-
None
-
None
Description
Put below simple pages into a Wicket web application:
TestPage1.html:
<html>
<head>
<title>title</title>
</head>
<body>
<div wicket:id="test1"></div>
<wicket:child></wicket:child>
</body>
</html>
TestPage1.java:
package com.example.test;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
public class TestPage1 extends WebPage {
public TestPage1()
{ add(new Label("test1", "test1")); }}
TestPage2.html:
<wicket:extend>
<wicket:enclosure child="test2">
<div wicket:id="test2"></div>
</wicket:enclosure>
<wicket:child></wicket:child>
</wicket:extend>
TestPage2.java:
package com.example.test;
import org.apache.wicket.markup.html.basic.Label;
public class TestPage2 extends TestPage1 {
public TestPage2()
{ add(new Label("test2", "test2")); }}
TestPage3.html:
<wicket:extend>
<wicket:enclosure child="test3">
<div wicket:id="test3"></div>
</wicket:enclosure>
</wicket:extend>
TestPage3.java:
package com.example.test;
import org.apache.wicket.markup.html.basic.Label;
public class TestPage3 extends TestPage2 {
public TestPage3()
{ add(new Label("test3", "test3")); }}
Here TestPage3 extends TestPage2, and TestPage2 extends TestPage1. Both TestPage2.html and TestPage3.html contains a <wicket:enclosure> tag. Now mount TestPage3 and access it, below errors will be generated:
Message: The component [Component id = test2] was rendered already. You can render it only once during a render phase. Class relative path: org.apache.wicket.markup.html.basic.Label:test2
Root cause:
org.apache.wicket.markup.MarkupException: The component [Component id = test2] was rendered already. You can render it only once during a render phase. Class relative path: org.apache.wicket.markup.html.basic.Label:test2
at org.apache.wicket.Page.componentRendered(Page.java:299)
at org.apache.wicket.Component.rendered(Component.java:2570)
at org.apache.wicket.Component.internalRender(Component.java:2377)
at org.apache.wicket.Component.render(Component.java:2301)
at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1415)
...
This error won't occur if <wicket:enclosure> is removed from one of the page.