You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Mathieu Mitchell (Jira)" <ji...@apache.org> on 2022/01/18 20:50:00 UTC

[jira] [Created] (WICKET-6946) isVisibleInHierarchy/isEnabledInHierarchy broken by isVisible/isEnabled override

Mathieu Mitchell created WICKET-6946:
----------------------------------------

             Summary: isVisibleInHierarchy/isEnabledInHierarchy broken by isVisible/isEnabled override
                 Key: WICKET-6946
                 URL: https://issues.apache.org/jira/browse/WICKET-6946
             Project: Wicket
          Issue Type: Bug
          Components: wicket-core
            Reporter: Mathieu Mitchell


Currently, isVisibleInHierarchy and isEnabledInHierarchy can return invalid values when isVisible or isEnabled is overridden. The problem is caused by the caching done in isVisibleInHierarchy/isEnabledInHierarchy. Currently, the cache is invalidated in setVisible/setEnabled. The cache invalidation is not done when components are overriding isVisible/isEnabled.

Additionally, the documentation mentions impacts of overriding isVisible/isEnabled when using "non-trivial" code, as the methods are called multiple times and can slow down page rendering.
The best practices chapter mentions overriding isVisible/isEnabled as the appropriate approach. Another best practices page mentions that a component factory should not be used because it prevents overriding isVisible/isEnabled in an anonymous class.

There is no clear warning that overriding isVisible/isEnabled can break isVisibleInHierarchy/isEnabledInHierarchy when the returned value can change.

There is also no indication that overriding isVisible/isEnabled is not recommended.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)