You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Palancher aurélien (JIRA)" <ji...@apache.org> on 2013/08/16 15:33:48 UTC

[jira] [Created] (WICKET-5320) RenderHead order is different with Ajax Request

Palancher aurélien created WICKET-5320:
------------------------------------------

             Summary: RenderHead order is different with Ajax Request
                 Key: WICKET-5320
                 URL: https://issues.apache.org/jira/browse/WICKET-5320
             Project: Wicket
          Issue Type: Bug
          Components: wicket
    Affects Versions: 1.5.7
            Reporter: Palancher aurélien
            Priority: Minor


Component renderHead method is called before the children renderHead in Ajax request.

In AjaxRequestTarget.respondHeaderContribution :

               component.renderHead(header);

		if (component instanceof MarkupContainer)
		{
			((MarkupContainer)component).visitChildren(new IVisitor<Component, Void>()
			{
				public void component(final Component component, final IVisit<Void> visit)
				{
					if (component.isVisibleInHierarchy())
					{
						component.renderHead(header);
					}
					else
					{
						visit.dontGoDeeper();
					}
				}
			});
		}


When responding a normal request, in ChildFirstHeaderRenderStrategy, we have :

       @Override
	public void renderHeader(final HtmlHeaderContainer headerContainer,
		final Component rootComponent)
	{
		Args.notNull(headerContainer, "headerContainer");
		Args.notNull(rootComponent, "rootComponent");

		// First the application level headers
		renderApplicationLevelHeaders(headerContainer);

		// Than its child hierarchy
		renderChildHeaders(headerContainer, rootComponent);

		// Than the root component's headers
		renderRootComponent(headerContainer, rootComponent);
	}

This causes problems refreshing the component.
In my case : a child component executes an onload javascript function wich stores datas in the markup, and my root component uses them in another onload function. First access : datas ok, ajax refresh : the datas are not stored yet.

I have tested component.renderHead(header); after the child visitor in AjaxRequestTarget and it works fine.


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira