Как получить идентификатор портлета, используя имя портлета в Liferay?

У меня есть требование получения разрешения ресурса с использованием имени портлета.

У меня будет имя портлета, а не идентификатор.

Имя разрешения ресурса для портлета - это идентификатор этого портлета. Я проверил таблицу портлетов, в ней есть только идентификатор и другая информация. Где будут сохранены другие атрибуты портлета?

Есть ли способ, которым я могу получить идентификатор портлета, используя имя портлета. У меня есть способ получить все портлеты и сравнить их, но если я могу напрямую получить идентификатор портлета, используя имя портлета, это будет полезно.

Срочно, если кто-нибудь знает, пожалуйста, ответьте, это будет очень полезно.

Заранее спасибо

Ответы на вопрос(2)

Вы можете попробовать это:

System.out.println("ID : " + themeDisplay.getPortletDisplay().getId());

System.out.println("InstanceID: " + themeDisplay.getPortletDisplay().getInstanceId());

System.out.println("Portlet Name: " + themeDisplay.getPortletDisplay().getPortletName());

Не забывайте:

<% ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
    themeDisplay.getUser().getScreenName(); %>

Если вы внимательно посмотрите, как генерируется идентификатор портлета на основе имени портлета, вы получите ответ.

Это постоянный шаблон, которому следуют, поэтому вы можете создать идентификатор портлета, как это делает liferay, если у вас есть имя. Liferay также создает идентификатор с помощью имени портлета.

Шаблон идентификатора портлета:<portletname in xml>_WAR_<servlet context name i.e. the war file without any special characters such as the hyphen>

Например: Если имя вашего портлетаMyWork определяется вportlet.xml и сгенерированный файл вwebapps папка (если вы используете tomcat)MyWork-portlet тогда результирующий идентификатор будетMyWork_WAR_MyWorkportlet.

Теперь, если у вас есть исходный код LifeRay, вы можете посмотреть наPortletLocalServiceImpl& APOS; sprivate _readPortletXML метод.

Edit:
Если вы хотите найти портлеты на определенной странице (учитываяfriendly-url страницы), то вы можете найти этоответ полезно.

 Vijayalakshmi29 июн. 2012 г., 06:56
Одна война с несколькими упакованными портлетами, которые являются неоспоримыми. Я также заметил, что к идентификатору портлета будет добавлена информация об экземпляре. как справиться в таком случае. Если я разверну его на разных серверах, идентификатор экземпляра будет другим.
 13 мая 2013 г., 12:53
- проверить соединение с таблицей портирования liferay DB и проверить колонку portletid - SELECT * from portlet; Я обнаружил, что в liferay 6.1 это & lt; имя портлета без -._ & gt; _WAR_ & lt; имя развернутого военного файла - в webapps в tomcat, опять же с нашим -._ & gt;
 25 июн. 2012 г., 06:58
Несколько войн одного портлета в одном экземпляре? или одна война со многими упакованными портлетами? Если вы можете подробно рассказать об окружающей среде, было бы полезно
 Vijayalakshmi25 июн. 2012 г., 06:48
Спасибо, Пракаш. Но как я узнаю имя контекста сервлета, которое является именем файла войны, если у меня развернуто несколько войн. Я знал, как создается идентификатор портлета. У меня будет много портлетов, входящих в различные контексты сервлетов.
 29 июн. 2012 г., 08:13
@Vijayalakshmi: Для одной войны несколько портлетов мой ответ в порядке. Теперь информация об экземпляре - это совсем другой случай. Поскольку информация об экземпляре связана со страницей / макетом и, следовательно, не сохраняется вPortlet таблица и хранится вLayout Таблица & APOS; stypeSettings колонка. Вы можете отредактировать свой вопрос, включив в него то, что вы хотитеinstance информация, это не совсем понятно из вашего вопроса.

Ваш ответ на вопрос