Liferay 5.2: расширение BaseFriendlyURLMapper, метод populateParams () не запущен - PullRequest
0 голосов
/ 26 марта 2012

Я пытался расширить BaseFriendlyURLMapper под Liferay5.2 - сервер приложений Jboss4.2 ... Нет проблем с методом buildPath (), но я не могу понять, когда срабатывает populateParams () ... даже в режиме отладки

это мой liferay-portlet.xml

<portlet>
    <portlet-name>bookingInterface</portlet-name>
    <configuration-action-class>my.package.MyConfiguration
    </configuration-action-class>

    <!-- -->

    <instanceable>false</instanceable>

    <private-request-attributes>false</private-request-attributes>
    <private-session-attributes>false</private-session-attributes>
    <friendly-url-mapper-class>
        my.package.MyFriendlyURLMapper
    </friendly-url-mapper-class>
    <use-default-template>true</use-default-template>
    <restore-current-view>true</restore-current-view>
</portlet>

это MyFriendlyURLMapper.java

public class MyFriendlyURLMapper extends BaseFriendlyURLMapper{

private static final String _PORTLET_ID="myPortlet_WAR_myPortlet";
private static final String _PORTLET_MAPPING = "myPortlet";
private static final String _LIFECYCLE_RENDER = "0";
private static final String _LIFECYCLE_ACTION = "1";
private static final String _LIFECYCLE_RESOURCE = "2";

public String getPortletId() {
    return _PORTLET_ID;
}
public String getMapping() {
    return _PORTLET_MAPPING;
}

public String buildPath(LiferayPortletURL portletURL) {
    String friendlyURLPath = null;
    String portletId = portletURL.getPortletId();
        String action = GetterUtil.getString(portletURL.getParameter("action"));
    if(action.equals("step1")){
        System.out.println("step1" );

    }
    friendlyURLPath = StringPool.FORWARD_SLASH +getMapping()
                    + StringPool.FORWARD_SLASH + action
                     ;

        if (Validator.isNotNull(friendlyURLPath)) {

            //parametri da rimuovere dalla portleturl

            portletURL.addParameterIncludedInPath("action");

            portletURL.addParameterIncludedInPath("p_p_id");
            portletURL.addParameterIncludedInPath("p_p_lifecycle");
            portletURL.addParameterIncludedInPath("p_p_state");
            portletURL.addParameterIncludedInPath("p_p_mode");
            portletURL.addParameterIncludedInPath("p_p_col_id");
            portletURL.addParameterIncludedInPath("p_p_col_count");

        } 


    }
    // return orignal unformatted url
    return friendlyURLPath;

}



public void populateParams(String friendlyURLPath, Map<String, String[]> parameterMap) {
    System.out.println(friendlyURLPath );
    System.out.println(parameterMap.size() );


}

есть подсказка?

1 Ответ

0 голосов
/ 26 марта 2012

populateParams () выполняет обратную функцию buildPath ().Он вызывается, когда дружественный URL-адрес необходимо преобразовать в исходный URL-адрес портлета Liferay.Это должно срабатывать, например, когда вы переходите на дружественный URL.Затем Liferay вызовет populateParams () для создания URL Liferay (вы знаете, длинный с большим количеством параметров).

Короче говоря, buildPath () используется для создания дружественного внешнего вида URL и populateParams () используется для создания URL портлета в стиле Liferay.Таким образом, отображение работает в обе стороны.

...