在 Wicket 1.4 中,我试图允许子页面更改父页面中标签上的 CSS 类,我一直这样做。这种情况的奇怪之处在于我想要定位的标签包装子页面标记。这是我尝试过的简化片段:
父页面.html
<div id="main" wicket:id="main">
<wicket:child />
</div>
父页面.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);
}
}
子页面.html
<wicket:extend>
...
</wicket:extend>
子页面.java
public class ChildPage extends Page {
...
public ChildPage() {
super();
...
setClassAttr("specific-class-for-this-page");
}
}
...这会爆炸,因为它出现了来自child加载,但不是java。 (如果我删除 wicket:id 和 java 代码div#main
, 一切都很好。)
请注意,parent我想操纵从孩子身上实际上是包裹着wicket:child
标签。在其他情况下,我也做了类似的事情,我想要使用的标签往往是兄弟姐妹或远离wicket:child
tag.
我真正想做的就是允许子级更改父级的类属性 - 还有其他方法可以做到这一点吗?为什么子页面不能嵌套在另一个 Wicket 页面组件下?
我想指出的是,从 Wicket 1.5 开始,该功能已被删除。因此,如果您使用 Wicket 1.5 或更高版本,您将使用TransparentWebMarkupContainer
组件而不是WebMarkupContainer.isTansparentResolver()
。我也遇到了和楼主一样的问题。我有一个包含 wicket:child 标签的外部 div,我根据需要显示的内容调整其宽度(Twitter Bootstrap 流体网格)。我的mainContentContainer
is a TransparentWebMarkupContainer
:
<div class="row-fluid">
<div class="span3" wicket:id="sidebarPanel"></div>
<div class="span6" wicket:id="mainContentContainer">
<wicket:child/>
</div>
<div class="span3" wicket:id="rightPanel"></div>
</div>
有时,rightPanel
是完全隐藏的,并且mainContentContainer
更改为class="span9"
占用未使用的视口。
See here https://cwiki.apache.org/WICKET/migration-to-wicket-15.html#MigrationtoWicket1.5-MarkupContainer.isTransparentResolver%2528%2529removed.
感谢您发帖。在我读到这篇文章之前,我遇到了完全相同的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)