В Wicket 1.4 я пытаюсь разрешить дочерним страницам изменять класс CSS для тега на родительской странице, что я делаю все время.Что странного в этом случае, так это то, что тег, на который я хочу нацелиться , оборачивает разметку дочерней страницы .Вот упрощенный фрагмент того, что я пробовал:
ParentPage.html
<div id="main" wicket:id="main">
<wicket:child />
</div>
ParentPage.java
public abstract class ParentPage {
private WebMarkupContainer main;
protected ParentPage() {
main = new WebMarkupContainer("main");
add(main);
}
public void setClassAttr(String cssClass){
main.add(SimpleAttributeModifier("class", cssClass);
}
}
ChildPage.html
<wicket:extend>
...
</wicket:extend>
ChildPage.java
public class ChildPage extends Page {
...
public ChildPage() {
super();
...
setClassAttr("specific-class-for-this-page");
}
}
... Который взрывается, потому что кажется, что HTML из child загружает, но не Java.(Если я удаляю wicket: id и java-код на div#main
, все в порядке.)
Обратите внимание, что тег parent , которым я хочу манипулировать изchild на самом деле оборачивает тег wicket:child
.В других случаях я делал что-то похожее: теги, с которыми я хочу работать, обычно являются братьями и сестрами или иным образом удалены от тега wicket:child
.
Все, что я действительно хочу сделать, - это позволить ребенку изменить классатрибут на родителя - есть ли другой способ сделать это?Почему дочерняя страница не может быть вложена в другой компонент страницы Wicket?