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)