JSF Showcase
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
- <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:portlet="http://xmlns.jcp.org/portlet_3_0"
- xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
- <portlet:actionURL escapeXml="false" var="actionURL">
- <portlet:param name="foo" value="1234" />
- <portlet:param name="Non-Faces-Postback" value="true" />
- </portlet:actionURL>
- <form action="#{actionURL}" method="post">
- <input type="submit" value="#{i18n['submit-non-faces-postback']}" />
- </form>
- </ui:composition>
- public class ActionURLDemoPortlet extends GenericFacesPortlet {
- @Override
- public void processAction(ActionRequest actionRequest, ActionResponse actionResponse) throws PortletException,
- IOException {
- ActionParameters actionParameters = actionRequest.getActionParameters();
- String viewState = actionParameters.getValue(ResponseStateManager.VIEW_STATE_PARAM);
- String nonFacesPostback = actionParameters.getValue("Non-Faces-Postback");
- if ((viewState == null) && ("true".equalsIgnoreCase(nonFacesPostback))) {
- MutableRenderParameters mutableRenderParameters = actionResponse.getRenderParameters();
- mutableRenderParameters.setValue("Non-Faces-Postback", nonFacesPostback);
- String foo = actionParameters.getValue("foo");
- if (foo != null) {
- mutableRenderParameters.setValue("foo", foo);
- }
- }
- else {
- super.processAction(actionRequest, actionResponse);
- }
- }
- @Override
- protected void doView(RenderRequest renderRequest, RenderResponse renderResponse) throws PortletException,
- IOException {
- RenderParameters renderParameters = renderRequest.getRenderParameters();
- String nonFacesPostback = renderParameters.getValue("Non-Faces-Postback");
- if (nonFacesPostback == null) {
- super.doView(renderRequest, renderResponse);
- }
- else {
- PrintWriter writer = renderResponse.getWriter();
- writer.write("<p>");
- writer.write("Successfully executed ");
- writer.write("<strong>non-JSF postback</strong> in ");
- writer.write(ActionURLDemoPortlet.class.getName());
- writer.write("</p>");
- String foo = renderParameters.getValue("foo");
- writer.write("<p>");
- writer.write("Action Parameter:<pre>foo=" + foo + "</pre>");
- writer.write("</p>");
- PortletURL renderURL = renderResponse.createRenderURL();
- MutableRenderParameters mutableRenderParameters = renderURL.getRenderParameters();
- mutableRenderParameters.setValue("componentPrefix", "portlet");
- mutableRenderParameters.setValue("componentName", "actionurl");
- mutableRenderParameters.setValue("componentUseCase", "general");
- writer.write("<p>");
- writer.write("<a href=\"");
- writer.write(renderURL.toString());
- writer.write("\">");
- writer.write("Return to portlet:actionURL in the Liferay Faces Showcase");
- writer.write("</a>");
- writer.write("</p>");
- }
- }
- }
Liferay Faces Bridge Implementation 5.0.0 + Showcase Common 3.1.1 + Liferay Faces Util 3.4.1 + Mojarra 2.2.20