개찰구 마크 업 상속은 기사를 위해 작동하지 않습니다 : 마크 업 컨테이너 내 자식 태그
문제
나는 마크 업 상속 의 마크 업 상속 in wicket 6.14.0 제목과 콘텐츠가있는 간단한 위젯을 만듭니다. 부모의 마크 업은 다음과 같습니다 :
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket>
<wicket:panel>
<div wicket:id="widgetBox">
<div wicket:id="widgetTitle"><wicket:enclosure child="icon"><span class="icon"><i wicket:id="icon"></i></span></wicket:enclosure>
<h5 wicket:id="headline"></h5>
</div>
<div wicket:id="widgetContent"><wicket:child/></div>
</div>
</wicket:panel>
</html>
.
코드는 꽤 똑바로 전달되지만 완전성을 위해서 :
public class ParentPanel extends Panel {
public ParentPanel(final String id, final IModel<String> title) {
super(id, title);
WebMarkupContainer widgetBox = new WebMarkupContainer("widgetBox");
add(widgetBox);
final WebMarkupContainer widgetTitle = new WebMarkupContainer("widgetTitle");
widgetBox.add(widgetTitle);
final WebMarkupContainer icon = new WebMarkupContainer("icon");
if (titleIcon != null) {
// custom class
icon.add(new IconBehavior("titleIcon"));
} else {
icon.setVisible(false);
}
widgetTitle.add(icon);
widgetTitle.add(new Label("headline", title));
widgetContent = new WebMarkupContainer("widgetContent");
widgetContent.add(new WidgetContentBehavior());
widgetBox.add(widgetContent);
}
}
.
이제 아동 구성 요소의 경우. 다음은 가장 간단한 마크 업입니다 :
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket>
<wicket:extend>
<span wicket:id="foobar"></span>
</wicket:extend>
</html>
.
및 물론 Java 코드 :
public class ChildPanel extends ParentPanel {
public ChildPanel(final String id, final IModel<String> title) {
super(id, title);
add(new Label("foobar", "Foobar"));
}
}
.
내가 기대하는 것은 물체가 "foobar"라고하는 렌더링 된 페이지가 "foobar"라는 렌더링 된 페이지입니다. 자식 태그가 배치됩니다. 대신이 RuntimeException이 있습니다.
Last cause: Unable to find component with id 'foobar' in [TransparentWebMarkupContainer [Component id = wicket_extend3]]
Expected: 'foobar:widgetBox:widgetContent:wicket_child2:wicket_extend3:foobar'.
Found with similar names: 'foobar', foobar:foobar'
.
마크 업 상속이 Wicket : MarkupContainer 내의 하위 태그를 지원하지 않으므로 계층 구조를 망칩니다. 나는 또한 테두리를 사용하여 동일한 결과를 얻습니다. 내 질문은 WidgetBox 및 widgetContent의 제어 (읽기 : Java 개체)를 갖는 것이 중요하기 때문에 현재 계층 구조를 유지 함으로써이 작업을 수행하는 방법입니다.
해결책
여기에 관한 또 다른 질문은 다음과 같습니다. 개찰구 : 하위 태그는 중첩 될 수 있습니다.페이지의 다른 구성 요소에서?
제공된 답변은 TransparentWebMarkupContainer
를 사용하여 문제를 해결합니다.
그러나 , 알아내는 것처럼, 자식 페이지가 TransparentWebMarkupContainer
를 정의하면 wicket:fragment
를 사용하면 실패합니다. wicket-4545 및 WICKET-5440
제휴하지 않습니다 StackOverflow