Namespacing ensures that a given portlet’s name is uniquely associated with elements in request parameters it sends to the portal. This prevents name conflicts with other elements on the portal page and with elements from other portlets on the page. Namespacing your portlet elements is easy. Simply use the
<portlet:namespace /> tag to produce a unique value for your portlet’s elements. The following example code uses the
<portlet:namespace /> tag to reference the portlet’s fm form during submission:
To illustrate the benefits of namespacing an element, such as the fm form from the example code above, suppose you have portlets named A and B in your portal and they both have a form named fm. Without portlet namespacing, the portal would be unable to differentiate between the two forms and, likewise, would be unable to determine their associated portlets. But, submitting both portlet A’s form and portlet B’s form as
<portlet:namespace />fm would distinguish the forms as _Afm and _Bfm, respectively. Liferay associates each namespaced element, such as these namespaced forms, with the portlet that produced it.
By default, Liferay only allows namespaced parameters to access portlets. However, many third-party portlets send unnamespaced parameters. Therefore, Liferay gives you the option to turn off the unnamespaced parameters filter for portlets, to avoid third-party portlets from breaking. To turn the filter off for a portlet, navigate to the portlet’s
liferay-portlet.xml file and enter the following tag:
Turning this filter off is on a per portlet basis, so you’ll need to set the
<requires-namespaced-parameters/> tag to false for every third-party portlet that sends unnamespaced parameters.
Great! You now know how portlet namespacing is implemented for Liferay portlets. We discussed a brief scenario using portlet namespacing for two different portlets. Lastly, we learned when and why to use unnamespaced parameters in your Liferay portlets.