掲示板

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

7年前 に Koryagin Andrey によって更新されました。

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

New Member 投稿: 3 参加年月日: 17/04/24 最新の投稿
Добрый день!
При попытке доработать русскую локализацию в 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
7年前 に Alexey Kakunin によって更新されました。

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

Liferay Master 投稿: 621 参加年月日: 08/07/07 最新の投稿
Добрый день! Сделал тестовый проект - https://github.com/akakunin/sample.hook.resourcebundle - у меня заработало и в Liferay DXP SP2 (+ fixpack-13) и в штатном Liferay CE 7.0.2

Сравните с вашим кодом
7年前 に Koryagin Andrey によって更新されました。

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

New Member 投稿: 3 参加年月日: 17/04/24 最新の投稿
Спасибо большое! Проблема оказалась в отсутствии параметра 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.