Release Notes - Pluto 3.1.0

Pluto version 3.1.0 is a release dedicated to the implementation of JSR 362 (Portlet 3.0) Specification. In addition, it implements a large subset of features required by the JSR 371 (MVC 1.0) Specification resulting in a new type of supported portlet development known as "MVCBean".

Regarding MVCBean portlets, see the following issues:

  • PLUTO-772: Implement MVCBean portlets
  • PLUTO-773: Develop JSP and Thymeleaf MVCBean demo portlets
  • PLUTO-775: Develop JSP and Thymeleaf MVCBean archetypes


  • [PLUTO-719] - PortletV3Demo attempts to store a non-encoded cookie value with a space character
  • [PLUTO-721] - The <script> text inside headSectionMarkup.jsp (PortletV3Demo) is not surrounded by //<![CDATA[...//]]>
  • [PLUTO-723] - PortletV3Demo DependencyPortlet does not encode the exception message
  • [PLUTO-725] - Several portlets in PortletV3Demo fail to work in Liferay Portal due to missing configuration in liferay-portlet.xml
  • [PLUTO-727] - PortletSession invalidated in the HEADER_PHASE gets recycled and reused in the RENDER_PHASE
  • [PLUTO-745] - Context root with "/" in the middle leads to an error
  • [PLUTO-752] - ChatRoomDemo injects dependent-scoped strings into @ApplicationScoped bean
  • [PLUTO-756] - PortletV3AnnotatedDemo injects dependent-scoped strings into @ApplicationScoped bean
  • [PLUTO-757] - V3RedirectPortlet demo does not redirect when running in Liferay due to misconfigured liferay-portlet.xml descriptor
  • [PLUTO-758] - PortletV3Demo injects a dependent-scoped string into an @ApplicationScoped bean
  • [PLUTO-765] - The wrong ClassLoader is used to load the portlet ResourceBundle in portlet-skin.jsp
  • [PLUTO-766] - PageAdminPortlet.addPage(ActionRequest) does not check if the portlet context path already contains a leading forward-slash
  • [PLUTO-776] - Portlet projects generated from archetypes cannot be built with Gradle
  • [PLUTO-779] - Chat Room demo portlet input values need to be escaped

New Feature

  • [PLUTO-746] - Develop the portlet-servlet-adapter module
  • [PLUTO-747] - Develop the thymeleaf-portlet-api module
  • [PLUTO-748] - Develop the thymeleaf-mvc-portlet-api module
  • [PLUTO-749] - Develop the thymeleaf-mvc-portlet-cdi module
  • [PLUTO-750] - Develop the thymeleaf-mvc-portlet-spring module
  • [PLUTO-768] - Introduce CSRF protection for the ACTION_PHASE via Spring Security
  • [PLUTO-772] - Implement MVCBean portlets


  • [PLUTO-753] - Improve performance of the ChatRoomDemo portlet by registering the PortletHub dependency
  • [PLUTO-763] - Avoid the necessity of having a default serialVersionUID in the image selector portlet demos


  • [PLUTO-742] - Add relativePath element to the pom.xml descriptors
  • [PLUTO-743] - Upgrade to version 0.14.0 of the maven-jaxb2-plugin
  • [PLUTO-764] - Upgrade to Tomcat 8.5.40
  • [PLUTO-767] - Upgrade the Spring Framework from version 2.0.2 to 5.1.5.RELEASE
  • [PLUTO-769] - Upgrade the maven-compiler-plugin configuration to JDK 8
  • [PLUTO-770] - PortletSessionScopedBeanMap.remove() does not remove bean instances from the underlying map
  • [PLUTO-771] - Consolidate the demonstration portlets into a "/demo" sub-directory
  • [PLUTO-773] - Develop JSP and Thymeleaf MVCBean demo portlets
  • [PLUTO-774] - Freeze the portlet-api dependency version at 3.0.1
  • [PLUTO-775] - Develop JSP and Thymeleaf MVCBean archetypes
  • [PLUTO-777] - Release Preparation 3.1.0