Foros de discusión

Переопределение имени базового портлета

Koryagin Andrey, modificado hace 6 años.

Переопределение имени базового портлета

New Member Mensajes: 3 Fecha de incorporación: 24/04/17 Mensajes recientes
Добрый день!
При попытке доработать русскую локализацию в LideRay версии 7.0-ga3 не получается переопределить имя базового портлета.

Порядок действий (на примере SocialActivityPortlet):
  • Создан модуль ServiceWrapper
  • Создан ресурс content.Language_ru.properties. В нем переопределен заголовок портлета SocialActivityPortlet: javax.portlet.title.com_liferay_social_activity_web_portlet_SocialActivityPortlet=Социальная активность пользователей
  • Реализован класс, наследованный от ResourceBundleLoader.
    
    package com.test.localization;
    import java.util.ResourceBundle;
    import org.osgi.service.component.annotations.Component;
    import org.osgi.service.component.annotations.Reference;
    import com.liferay.portal.kernel.util.AggregateResourceBundleLoader;
    import com.liferay.portal.kernel.util.CacheResourceBundleLoader;
    import com.liferay.portal.kernel.util.ClassResourceBundleLoader;
    import com.liferay.portal.kernel.util.ResourceBundleLoader;
    
    @Component(
            immediate = true,
            property = {
                "bundle.symbolic.name=com.liferay.social.activity.web",
                "resource.bundle.base.name=content.Language_ru",
                "servlet.context.name=social-activity-web",
            }
        )
    
    public class RussianLanguageSocialActivityPortlet implements ResourceBundleLoader {
    
    	private AggregateResourceBundleLoader _resourceBundleLoader;
    	
    	@Override
    	public ResourceBundle loadResourceBundle(String languageId) {
    		  return _resourceBundleLoader.loadResourceBundle(languageId);
    	}
    	
    	   @Reference(target = "(bundle.symbolic.name=com.liferay.social.activity.web)")
           public void setResourceBundleLoader(
               ResourceBundleLoader resourceBundleLoader) {
    
               _resourceBundleLoader = new AggregateResourceBundleLoader(
                   new CacheResourceBundleLoader(
                       new ClassResourceBundleLoader(
                           "content.Language_ru",
                           RussianLanguage.class.getClassLoader())),
                   resourceBundleLoader);
           }
    
    
    }
    
  • Модуль развернут на портале

После деплоя модуля на север, в админ панели (в левом боковом меню и в заголовке страницы) все равно подгружается старое имя, прописанное в исходниках портала. В чем может быть проблема?

Спасибо!
thumbnail
Alexey Kakunin, modificado hace 6 años.

RE: Переопределение имени базового портлета

Liferay Master Mensajes: 621 Fecha de incorporación: 7/07/08 Mensajes recientes
Добрый день! Сделал тестовый проект - https://github.com/akakunin/sample.hook.resourcebundle - у меня заработало и в Liferay DXP SP2 (+ fixpack-13) и в штатном Liferay CE 7.0.2

Сравните с вашим кодом
Koryagin Andrey, modificado hace 6 años.

RE: Переопределение имени базового портлета

New Member Mensajes: 3 Fecha de incorporación: 24/04/17 Mensajes recientes
Спасибо большое! Проблема оказалась в отсутствии параметра component.name в аннотации @Reference и в неправильном указании имени bundle (было Language_ru вместо Language).

Не подскажите еще, как быть с портлетом Application Display Templates (класс com_liferay_dynamic_data_mapping_web_portlet_PortletDisplayTemplatePortlet)? Для него отсутствует параметр Web-ContextPath, при просмотре в Felix GOGO, и не понятно, что нужно указать в параметре servlet.context.name при определении @Component.