portlet:actionURL

PortletActionURL is a UIComponent that provides the ability to get a PortletURL that invokes the ACTION_PHASE of the portlet lifecycle targeting the current portlet.

General Usage

Specify portlet:param as a child tag in order to add portlet action parameters to the URL. The portlet:actionURL component tag is provided for the sake of completeness since it has little purpose in JSF portlets. As shown in the example below, a practical use-case might be to @Override GenericFacesPortlet in order to intercept a non-JSF postback.

Source Code

  1. <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:portlet="http://xmlns.jcp.org/portlet_3_0"
  2. xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
  3.  
  4. <portlet:actionURL escapeXml="false" var="actionURL">
  5. <portlet:param name="foo" value="1234" />
  6. <portlet:param name="Non-Faces-Postback" value="true" />
  7. </portlet:actionURL>
  8. <form action="#{actionURL}" method="post">
  9. <input type="submit" value="#{i18n['submit-non-faces-postback']}" />
  10. </form>
  11.  
  12. </ui:composition>
  1. public class ActionURLDemoPortlet extends GenericFacesPortlet {
  2.  
  3. @Override
  4. public void processAction(ActionRequest actionRequest, ActionResponse actionResponse) throws PortletException,
  5. IOException {
  6.  
  7. ActionParameters actionParameters = actionRequest.getActionParameters();
  8.  
  9. String viewState = actionParameters.getValue(ResponseStateManager.VIEW_STATE_PARAM);
  10.  
  11. String nonFacesPostback = actionParameters.getValue("Non-Faces-Postback");
  12.  
  13. if ((viewState == null) && ("true".equalsIgnoreCase(nonFacesPostback))) {
  14.  
  15. MutableRenderParameters mutableRenderParameters = actionResponse.getRenderParameters();
  16.  
  17. mutableRenderParameters.setValue("Non-Faces-Postback", nonFacesPostback);
  18.  
  19. String foo = actionParameters.getValue("foo");
  20.  
  21. if (foo != null) {
  22. mutableRenderParameters.setValue("foo", foo);
  23. }
  24. }
  25. else {
  26. super.processAction(actionRequest, actionResponse);
  27. }
  28. }
  29.  
  30. @Override
  31. protected void doView(RenderRequest renderRequest, RenderResponse renderResponse) throws PortletException,
  32. IOException {
  33.  
  34. RenderParameters renderParameters = renderRequest.getRenderParameters();
  35. String nonFacesPostback = renderParameters.getValue("Non-Faces-Postback");
  36.  
  37. if (nonFacesPostback == null) {
  38. super.doView(renderRequest, renderResponse);
  39. }
  40. else {
  41. PrintWriter writer = renderResponse.getWriter();
  42. writer.write("<p>");
  43. writer.write("Successfully executed ");
  44. writer.write("<strong>non-JSF postback</strong> in ");
  45. writer.write(ActionURLDemoPortlet.class.getName());
  46. writer.write("</p>");
  47.  
  48. String foo = renderParameters.getValue("foo");
  49. writer.write("<p>");
  50. writer.write("Action Parameter:<pre>foo=" + foo + "</pre>");
  51. writer.write("</p>");
  52.  
  53. PortletURL renderURL = renderResponse.createRenderURL();
  54. MutableRenderParameters mutableRenderParameters = renderURL.getRenderParameters();
  55. mutableRenderParameters.setValue("componentPrefix", "portlet");
  56. mutableRenderParameters.setValue("componentName", "actionurl");
  57. mutableRenderParameters.setValue("componentUseCase", "general");
  58. writer.write("<p>");
  59. writer.write("<a href=\"");
  60. writer.write(renderURL.toString());
  61. writer.write("\">");
  62. writer.write("Return to portlet:actionURL in the Liferay Faces Showcase");
  63. writer.write("</a>");
  64. writer.write("</p>");
  65. }
  66. }
  67. }
Liferay Faces Bridge Implementation 5.0.0 + Showcase Common 3.1.1 + Liferay Faces Util 3.4.1 + Mojarra 2.2.20