我尝试实现 BookmarkablePageLink 使用的项目使用一个 BasePage,然后用不同的面板填充它。 URL(例如 www.example.com/?number=12345 )转到 BasePage,从数据库中检索一些信息并将其传递到新建的面板。 如果我调试代码并检查一次,一切都会正确显示。但是,BasePage 的 onConfigure 方法不断被调用。 到目前为止我还没有弄清楚为什么
protected void onConfigure() {
ToekenningSearchCriteria criteria = new ToekenningSearchCriteria();
criteria.getSearchItem().setNumber(pageParameters.get("number").toString());
Toekenning toekenning = getToekenningService().findWithCriteria(criteria);
this.setContentPanel(this.getContentPanelFactory().getContentPanel("SOME_CONTENT_PANEL_TYPE", toekenning));
}
我希望 onConfigure
方法仅被调用一次,但它被无限次调用。
编辑:将代码放在 onBeforeRender 方法中会产生相同的结果。
最佳答案
您需要 onInitialize()
而不是 onConfigure() 。
onInitialize 就像构造函数。不同之处在于,在 Component#onInitialize 中,您可以通过 getParent() 访问父级,并通过 getMarkup() 访问标记。由于我们在这里讨论 Page,因此没有父级。
每个有状态页面的请求都会调用onConfigure()。您可以执行 if (!hasBeenRendered() {...} ) 来确保主体仅执行一次。
关于java - PageParameters导致Page的onConfigure被多次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57217500/