[
https://issues.apache.org/jira/browse/WICKET-2594?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12785777#action_12785777
]
Igor Vaynberg commented on WICKET-2594:
---------------------------------------
the testcase doesnt make sense. it will fail even after the change in
setSelectedTab(), you cannot call setSelectedTab(x) before there are x tabs in
the tabbed panel...
> TabbedPanel, tabsVisibilityCache throws IndexOutOfBounds
> --------------------------------------------------------
>
> Key: WICKET-2594
> URL: https://issues.apache.org/jira/browse/WICKET-2594
> Project: Wicket
> Issue Type: Bug
> Components: wicket-extensions
> Affects Versions: 1.4.3
> Reporter: Thies Edeling
> Attachments: TabbedPanelTest.java
>
>
> With wicket extensions 1.4.3, TabbedPanel throws an IndexOutOfBounds
> exception on the tabsVisibilityCache array when adding more tabs after the
> panel is rendered.
> The onBeforeRender method calls the isTabVisible method which initializes an
> array of booleans for visibility caching. The length of this array is the
> amount of tabs added at that time. When - through ajax - a new tab is added
> after rendering and setSelectedTab is called an exception is thrown at:
> Boolean visible = tabsVisibilityCache[tabIndex];
> Fix: increase the array before checking or use a List. In TabbedPanel
> private boolean isTabVisible(int tabIndex)
> {
> if (tabsVisibilityCache == null)
> {
> tabsVisibilityCache = new Boolean[getTabs().size()];
> }
> if (tabsVisibilityCache.length < tabIndex + 1)
> {
> tabsVisibilityCache =
> Arrays.copyOf(tabsVisibilityCache, tabIndex + 1);
> }
>
> if (tabsVisibilityCache.length > 0)
> {
> Boolean visible = tabsVisibilityCache[tabIndex];
>
> if (visible == null)
> {
> visible = getTabs().get(tabIndex).isVisible();
> tabsVisibilityCache[tabIndex] = visible;
> }
>
> return visible;
> }
> else
> {
> return false;
> }
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.