You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Igor Vaynberg (JIRA)" <ji...@apache.org> on 2008/10/30 08:00:47 UTC
[jira] Resolved: (WICKET-1891) AjaxLazyLoadPanel shouldn't call
getLoadingComponent(String) in constructor
[ https://issues.apache.org/jira/browse/WICKET-1891?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Igor Vaynberg resolved WICKET-1891.
-----------------------------------
Resolution: Fixed
Assignee: Igor Vaynberg
> AjaxLazyLoadPanel shouldn't call getLoadingComponent(String) in constructor
> ---------------------------------------------------------------------------
>
> Key: WICKET-1891
> URL: https://issues.apache.org/jira/browse/WICKET-1891
> Project: Wicket
> Issue Type: Improvement
> Components: wicket-extensions
> Affects Versions: 1.4-M2
> Reporter: Craig McIlwee
> Assignee: Igor Vaynberg
> Priority: Minor
> Fix For: 1.4-M4
>
>
> Use case:
> class MyPanel extends AjaxLazyLoadPanel {
> private boolean bool;
> public MyPanel(String id, boolean bool) {
> super(id); <-- bool is used in this call
> this.bool = bool; <-- but not assigned until this call
> }
> public getLoadingComponent(String id) {
> if (bool) {
> return componentA;
> } else {
> return componentB;
> }
> }
> }
> -----
> Since getLoadingComponent(String) is called as part of the super constructor then the actual value of 'bool' can never be used. Furthur, if bool were an object instead of a primitive could potentially cause an NPE. Instead the loading component can be created in onBeforeRender():
> protected void onBeforeRender() {
> if (!renderedOnce) {
> loadingComponent = getLoadingComponent("content");
> add(loadingComponent.setRenderBodyOnly(true));
> renderedOnce = true;
> }
> super.onBeforeRender();
> }
> ... this also requires a change to the ajax behavior:
> public boolean isEnabled(Component<?> component) {
> return get("content") == loadingComponent || loadingComponent == null;
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.