You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Hendy Irawan (JIRA)" <ji...@apache.org> on 2014/06/05 14:59:02 UTC

[jira] [Updated] (WICKET-5612) If Wicket JS libs are moved to footer, AbstractAutoCompleteBehavior throws "Uncaught ReferenceError: Wicket is not defined"

     [ https://issues.apache.org/jira/browse/WICKET-5612?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Hendy Irawan updated WICKET-5612:
---------------------------------

    Attachment: wicketrefe.png

> If Wicket JS libs are moved to footer, AbstractAutoCompleteBehavior throws "Uncaught ReferenceError: Wicket is not defined"
> ---------------------------------------------------------------------------------------------------------------------------
>
>                 Key: WICKET-5612
>                 URL: https://issues.apache.org/jira/browse/WICKET-5612
>             Project: Wicket
>          Issue Type: Improvement
>          Components: wicket
>    Affects Versions: 6.15.0
>         Environment: wicket-bootstrap
>            Reporter: Hendy Irawan
>         Attachments: wicketrefe.png
>
>
> I'm moving all JS libs to footer (using wicket-bootstrap also), which works very well because Wicket's {{ResourceReference}} has {{getDependencies()}} (thanks!! :) ).
> However {{AutoCompleteTextField}} is giving JavaScript error, particularly in {{AbstractAutoCompleteBehavior}} here:
> {code}
> 	private void renderAutocompleteHead(final IHeaderResponse response)
> 	{
> 		response.render(JavaScriptHeaderItem.forReference(AUTOCOMPLETE_JS));
> 		final String id = getComponent().getMarkupId();
> 		String indicatorId = findIndicatorId();
> 		if (Strings.isEmpty(indicatorId))
> 		{
> 			indicatorId = "null";
> 		}
> 		else
> 		{
> 			indicatorId = "'" + indicatorId + "'";
> 		}
> 		String initJS = String.format("new Wicket.AutoComplete('%s','%s',%s,%s);", id,
> 			getCallbackUrl(), constructSettingsJS(), indicatorId);
> 		final OnDomReadyHeaderItem onDomReady = OnDomReadyHeaderItem.forScript(initJS);
> 		response.render(new WrappedHeaderItem(onDomReady));
> 	}
> {code}
> Error:
> {code}
> Uncaught ReferenceError: Wicket is not defined ?3:6
> (anonymous function) ?3:6
> {code}
> First lines of rendered HTML:
> {code}
> <!DOCTYPE html>
> <html lang="">
> <head><link rel="stylesheet" type="text/css" href="../wicket/resource/org.apache.wicket.devutils.debugbar.DebugBar/wicket-debugbar-ver-1399102536000.css" />
> <script type="text/javascript" >
> /*<![CDATA[*/
> Wicket.Event.add(window, "domready", function(event) { new Wicket.AutoComplete('searchTexte','./?3-1.IBehaviorListener.1-navbar-searchForm-searchText',{preselect: false,maxHeight: -1,adjustInputWidth: true,useSmartPositioning: false,useHideShowCoveredIEFix: true,showListOnEmptyInput: false,ignoreBordersWhenPositioning: true,showListOnFocusGain: false,throttleDelay: 300,minInputLength: 1,parameterName: 'q',showCompleteListOnFocusGain: false},null);;});
> /*]]>*/
> </script>
> ...
> {code}
> Suggestion: Change to {{OnLoadHeaderItem}} instead, or a way to make sure the script executes after Wicket libraries are loaded.



--
This message was sent by Atlassian JIRA
(v6.2#6252)