Wicket Markup-Erbe, der nicht für Wicket funktioniert: Kind-Tags in MarkupContainers
Frage
Ich verwende Markup-Erbschaft in Wicket 6.14.0 an Erstellen Sie ein einfaches Widget mit Titel und Inhalt. Das Markup der Eltern sieht aus wie folgt:
generasacodicetagpre.Ihr Code ist ziemlich unnötig, aber für die Vollständigkeit halber:
generasacodicetagpre.jetzt für die untergeordnete Komponente. Hier ist das einfachste Markup:
generasacodicetagpre.und natürlich der Java-Code:
generasacodicetagpre.Was ich erwarte, ist natürlich eine gerenderte Seite, die "foobar" sagt, wo das Wicket: Kindermarke platziert wird. Stattdessen gibt es diese Runtimeexception:
generasacodicetagpre.Es scheint, als ob Markup-Erbschaft nicht Wicket unterstützt: Kindertags in einem MarkupContainer und somit die Hierarchie durcheinander bringen. Ich habe auch die Verwendung eines grenze , stattdessen das gleiche Ergebnis. .
Meine Frage ist natürlich, wie Sie diese Arbeit erhalten, indem Sie die aktuelle Hierarchie aufrechterhalten, da es wichtig ist, die Kontrolle zu haben (Lesen: ein Java-Objekt) von WidgetBox und WidgetContent.
Lösung
Hier ist eine weitere Frage zu Ihrem Thema: Kann ein Wicket: Kindermarke verschachtelt seinUnter einer anderen Komponente auf der Seite?
Die angegebenen Antworten verwenden TransparentWebMarkupContainer
, um das Problem zu lösen.
Jedoch , wie ich herausgefunden habe, heißt es, dass die Verwendung von TransparentWebMarkupContainer
fehlschlägt, wenn Ihre Kinderseite generationspflichte bestimmte.Siehe Themen Wicket-5440