2

I wanted to use the Liferay URL mapping, but currently there is a bug with JSF 2 and URL mapping, so it doesn't work (http://issues.liferay.com/browse/FACES-257). So I switched to PrettyFaces.

My question is, how can you in PrettyFaces map a link like

localhost:8080/web/guest/wsw?p_auth=oPRD7ELs&p_p_id=KonakardPotrlets_WAR_KonakardPotrletsportlet&p_p_lifecycle=1&p_p_state=normal&p_p_mode=view&p_p_col_id=column-1&p_p_col_count=1&_KonakardPotrlets_WAR_KonakardPotrletsportlet__facesViewIdRender=%2Fviews%2Fwizard.xhtml

to something like this?

localhost:8080/web/guest/wsw/views/wizard/id=2

Note: I need also to generate a new parameter id, which is set in a bean.

BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555

1 Answers1

0

FACES-257 has been fixed long ago. You should use Liferay Friendly URLs.

Create a friendly-url-routes.xml file under src/main/resources/:

<?xml version="1.0"?>
<!DOCTYPE routes PUBLIC "-//Liferay//DTD Friendly URL Routes 7.0.0//EN" "http://www.liferay.com/dtd/liferay-friendly-url-routes_7_0_0.dtd">

<routes>
    <route>
    <pattern>/views/{viewName}/id={my_id}</pattern>
        <generated-parameter name="_facesViewIdRender">/WEB-INF/views/{viewName}.xhtml</generated-parameter>
        <implicit-parameter name="p_p_lifecycle">0</implicit-parameter>
        <implicit-parameter name="p_p_mode">view</implicit-parameter>
        <implicit-parameter name="p_p_state">normal</implicit-parameter>
    </route>
</routes>

You also need to add the following config to the <portlet> section of your liferay-portlet.xml:

<friendly-url-mapper-class>com.liferay.portal.kernel.portlet.DefaultFriendlyURLMapper</friendly-url-mapper-class>
<friendly-url-mapping>my-portlet</friendly-url-mapping>
<friendly-url-routes>friendly-url-routes.xml</friendly-url-routes>

The URL will be:

localhost:8080/web/guest/wsw/-/my-portlet/views/wizard/id=2
stiemannkj1
  • 4,418
  • 3
  • 25
  • 45