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.
Committed another fix at revision 34359. The fix is for the issue related to only being able to use once the autocomplete functionality. The client id was removed from the text input to cause an update of the whole autocomplete component markup, from the root node, which includes the script tag that re-applies the autocomplete functionality to the text input.