Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: EE-3.2.0.GA
-
Fix Version/s: 3.3
-
Component/s: ACE-Components, Sample Apps
-
Labels:None
-
Environment:ACE
-
Assignee Priority:P3
Description
While testing the portlet version of showcase, I noticed that the GMap Autocomplete example only seems to work properly if a value is selected from the drop down list. If I simply type a valid location (e.g. Paris) and hit Enter, nothing happens.
In the non-portlet version this doesn't result in any errors but in the portlet version, it causes the following exception due to the fact that the URL for the output link is null or blank:
19:36:16,909 ERROR [BaseURLEncodedStringImpl:57] URL path must start with a / or include ://
java.lang.IllegalArgumentException: URL path must start with a '/' or include '://'
at com.liferay.portlet.PortletResponseImpl.encodeURL(PortletResponseImpl.java:399)
at com.liferay.faces.bridge.context.url.BaseURLEncodedStringImpl.toString(BaseURLEncodedStringImpl.java:54)
at com.liferay.faces.bridge.context.url.BridgeURLBaseImpl.toString(BridgeURLBaseImpl.java:139)
at com.liferay.faces.bridge.context.ExternalContextImpl.encodeResourceURL(ExternalContextImpl.java:134)
at com.sun.faces.renderkit.html_basic.OutputLinkRenderer.renderAsActive(OutputLinkRenderer.java:239)
at com.sun.faces.renderkit.html_basic.OutputLinkRenderer.encodeBegin(OutputLinkRenderer.java:107)
...
This may be a problem with the bridge being a little overzealous in checking the link and not taking into consideration that it could be null but the current behaviour of the component or the example could probably be improved.
In the non-portlet version this doesn't result in any errors but in the portlet version, it causes the following exception due to the fact that the URL for the output link is null or blank:
19:36:16,909 ERROR [BaseURLEncodedStringImpl:57] URL path must start with a / or include ://
java.lang.IllegalArgumentException: URL path must start with a '/' or include '://'
at com.liferay.portlet.PortletResponseImpl.encodeURL(PortletResponseImpl.java:399)
at com.liferay.faces.bridge.context.url.BaseURLEncodedStringImpl.toString(BaseURLEncodedStringImpl.java:54)
at com.liferay.faces.bridge.context.url.BridgeURLBaseImpl.toString(BridgeURLBaseImpl.java:139)
at com.liferay.faces.bridge.context.ExternalContextImpl.encodeResourceURL(ExternalContextImpl.java:134)
at com.sun.faces.renderkit.html_basic.OutputLinkRenderer.renderAsActive(OutputLinkRenderer.java:239)
at com.sun.faces.renderkit.html_basic.OutputLinkRenderer.encodeBegin(OutputLinkRenderer.java:107)
...
This may be a problem with the bridge being a little overzealous in checking the link and not taking into consideration that it could be null but the current behaviour of the component or the example could probably be improved.
GMap Autocomplete is now throwing a client-side error during the initial render which can interfere with other portlets/components.
TypeError: 'undefined' is not an object (evaluating 'new google.maps.places.Autocomplete')
Goes away if the "&libraries=places" is added to the GMap API key. Perhaps we should consider making this permanent. When it fails, Drag and Drop stops working but it works if the GMap Autocomplete portlet is removed. It also works if it's rendered "before" the GMap portlet rather than after. Still throws the following with LiferayFaces Bridge: