В последнее время появляется ошибка Портлет изменен, отредактируйте страницу в Электронном бюджете при открытии списка любых документов.
Решение: Необходимо удалить куки в браузере, закрыть браузер и сбросить соединение в Континент TLS клиент. Процедуру сделать несколько раз пока ошибка не исчезнет.
Как исправить Портлет изменен, отредактируйте страницу в браузере Firefox
- Нажать Alt на клавиатуре;
- Нажать в появившейся панели в Firefox на Журнал;
- Нажать на Удалить недавнюю историю, после оставить галочки как на скриншоте:
- Перезапустить Firefox и Сбросить соединение в Континент TLS клиенте.
- Повторить несколько раз пока ошибка не исчезнет.
Как исправить Портлет изменен, отредактируйте страницу в браузере Хром
- Нажать на Ctrl + H на кливиатуре.
- Нажать на Очистить историю и выставить галочки как на скриншоте.
- После Сбросить соединение в Континент TLS клиент.
- Перезапустить Хром.
- Повторить несколько раз пока ошибка не исчезнет.
08 сен 2020 09:22 — 08 сен 2020 09:28 #16814
от Alex_04
andrew-matveyev пишет: Да, починили… Вообще пропал ПУР(КС)…))))))))))))
Кипит работа в стране… Чинят не покладая рук, 24/7, прямо на коленках! Может еще какие лишние запчасти выкинут из этого многоколесного велосипеда? ))
На все вопросы типа «Как бороться с ошибкой … в ЭБ?» напрашивается один универсальный ответ: «Подождать денек-другой, авось само рассосется!» И не надо новых тем создавать.
«Мы будем жить плохо, но недолго.» (© Черномырдин В.С.)
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
В этом руководстве будут выявлены некоторые из всех потенциальных причин, которые могут вызвать срабатывание портлета панели управления, а затем выделено множество возможных исправлений, которые вы можете попытаться определить для определения проблемы.
ПК работает медленно?
Улучшите скорость своего компьютера сегодня, загрузив это программное обеспечение — оно решит проблемы с вашим ПК. г.
Панель управления разделена на четыре важных области: Пользователи, Сайты, Приложения или Конфигурация. Параметры в разделе «Конфигурация», относящиеся к этой категории панели мониторинга, включают параметры конфигурации, которые чаще всего управляют работой портала и тем, как проблема интегрируется с другими вашими системами. В этой части мы рассмотрим следующие темы:
<время>
Liferay внес много изменений в панель управления. Мы можем представить наш собственный портлет – панель управления Liferay. Вот как мы можем добавить настраиваемый портлет на вашу панель управления Liferay.
Требования
- Java
- Liferay Portal 7 / 7.x
Экологическое законодательство
- JDK 8
- Eclipse
- Портал Liferay
Следуйте следующему шагу, чтобы добавить портлет в панель управления
<время>
1. Создайте портлет MVC
- Перейдите в Liferay Project – Modules – New Workspace.
- Выберите “Дополнительно” – “Liferay” – “Проект модуля Liferay” и нажмите “Далее”. …
- Введите название уточнения.
- Выберите “Имя шаблона проекта”, тогда как “mvc-portlet” и нажмите “Далее”.
- Введите свое личное имя пакета и нажмите «Готово». Необходимая файловая структура для модуля MVC создается по следующим причинам.
Добавить их свойство чтения в класс портлета
один 2 3 несколько < p> 5 веские причины, по которым 7 8 изо всех сил пытаются найти 10 11 1 13 четырнадцать 15 16 < p> 16 18 16 20 21 |
package com.ignek.portal.student.portlet; @Component ( сразу истинно, свойство = ” Com.liferay.portlet.display-category = category.hidden “, ” com. Liferay. Portlet.instanceable = true “, « javax. Portlet. .display-name = Студенческий портлет “, “, “javax. portlet.name =” + StudentPortletKeys.PORTLET_ID, ” javax.portlet. resource-bundle = content.Language “, ” javax.portlet. security-role-ref = power-user, user “, , service = Portlet.class ) Открытый класс StudentPortlet расширяет MVCPortlet |
всего два. Ваш реализующий константный класс
Пакет всегда один и тот же com.ignek.portal.student.Class; общедоступные StudentPortletKeys Общедоступная статическая конечная строка PORTLET_ID подразумевает «com_ignek_portal_student_portlet_StudentPortlet»; |
3. Добавьте зависимости
![]()
группа compileOnly: “com.liferay”, имя: com.liferay.application.list.api “
4. Создайте класс компонента панельного приложения
Это должно расширять класс BasePanelApp и объявлять вещи на том основании, что служба с service = PanelApp.class.
один конкретный 2 3 немного 5 2 7 8 восемь 10 11 один год 13 15 15 16 < / p> семнадцатилетний 18 16 20 21 двадцать два 23 12 25 ПК работает медленно?ASR Pro — идеальное решение для ремонта вашего ПК! Он не только быстро и безопасно диагностирует и устраняет различные проблемы с Windows, но также повышает производительность системы, оптимизирует память, повышает безопасность и точно настраивает ваш компьютер для максимальной надежности. Так зачем ждать? Начните сегодня! 28 |
Пакет com.ignek.portal.student .portlet; @Component ( немедленно = true, свойство = ” “” “” “” “” “Panel.category. Key =” + PanelCategoryKeys.CONTROL_PANEL_USERS , service = класс PanelApp.Class) Public StudentPanelApp увеличивает BasePanelApp @Override публичной строки getPortletId () return StudentPortletKeys. PORTLET_ID; @Override @Reference (target соответствует” (javax.portlet.name = “+ StudentPortletKeys .PORTLET_ID + “)”, unbind равно “-“) public void setPo rtlet (Portlet суперпортлет) .setPortlet (портлет); |
Давайте посмотрим
“panel.category.Defines key” часть лиги, которой в вашем случае является “control_panel.users”. В результате, наш студенческий пакет программного обеспечения, несомненно, добавлен в раздел «Пользователи» панели управления.
“panel.app.order” определяет позицию портлета на большей части портлета в вашем списке под полем «Пользователи». Раздел в панели. Ваш
Теперь необходимая файловая структура создана, как описано ниже.
5. Разверните свой основной модуль, и вы можете выбрать его на панели управления Liferay
Ignek Infotech является уникальным среди ведущих поставщиков услуг разработки и консалтинга Liferay, предлагающих комплексные решения. Мы предоставляем самые лучшие решения и услуги нашим клиентам по всему миру. Для получения дополнительной информации по этой несвязанной теме посетите его страницу «Портфолио».
Если вы почти всегда используете 7 пакетов в Liferay (например, запустили с инструментами Blade), вы можете использовать его со встроенными приложениями. Панель приложения назначает мой функциональный портлет позиции на панели доминирования.
Предположим, у вас есть Blade, ведущий к портлету, например:
@component ( мгновенно правда = Атрибут = "com.liferay.portlet.display-category подразумевает category.sample", "com.liferay.portlet.instanceable = false", "javax.portlet.name = cpportlet", "javax.portlet.display-name = портлет супервизоров", Панель "javax.portlet.security-role-ref = power-user, user" , service = Portlet.class)Открытый класс CpPortlet расширяет GenericPortlet в раздавливании Защищенный от пустоты doView ( RenderRequest renderRequest, RenderResponse renderResponse) запускает исключение IOException, PortletException PrintWriter printWriter подразумевает renderResponse.getWriter (); printWriter.print («Портлет cp - Всем привет!»);
Теперь просто создайте еще один компонент OSGi, который реализует службу PanelApp
:
@component ( немедленно = правда, Свойство = "panel.app.order: Integer = 10000", // Определяем список позиций in "panel.category.key =" + PanelCategoryKeys.SITE_ADMINISTRATION_CONTENT // Чтобы появиться в сеансе "Content" , service совпадает с PanelApp.class)Упражнения на растяжку в открытом классе CpPanelApp BasePanelApp @ Раздавить судебная строка GetPortletId () Прибыль «Портлет»; // Бизнес того же человека в портлете. - раздавить @Ссылка( target = "(javax.portlet.name соответствует cpportlet)", отмена подразумевает "-" ) много пустых setPortlets (портлет-портлет) super.setPortlet (портлет);
Вы можете использовать API списка приложений для его компиляции. Здесь мы сталкиваемся с classSom PanelApp
. Так что просто добавьте эту зависимость к любому build.gradle
, например ниже:
dependencies compileOnly group: "com.liferay.portal", имя человека: "com.liferay.portal.kernel", версия: "2.0.0" compileOnly "группа javax: .portlet", бренд: "portlet-api", версия: "2.0" compileOnly "org group: .osgi", имя: "org.osgi.compendium", версия: "5.0.0" compileOnly area: "com.liferay", имя: "com.liferay.application.list.api", версия: "2.0.0" // добавлено
Теперь он предоставляется через процесс зависимости, и обычно портлет появляется в списке:
Это главное – документация может быть очень информативной.
Улучшите скорость своего компьютера сегодня, загрузив это программное обеспечение — оно решит проблемы с вашим ПК. г.
How To Troubleshoot The Control Panel Portlet
Comment Vous Aider à Dépanner Le Portlet Du Panneau De Commande
So Beheben Sie Fehler Im Bedienfeld-Portlet
제어판 포틀릿 문제 해결 방법
Helpen Bij Het Oplossen Van Problemen Met De Portlet Van Het Bedieningspaneel
Come Risolvere Ogni Portlet Del Nostro Pannello Di Controllo
Como Solucionar Problemas Do Portlet Do Painel Solar De Controle
Jak Rozwiązywać Problemy Z Portletem Panelu Sterowania
Cómo Ayudar A Solucionar Problemas Del Portlet Del Panel De Control
Hur Du Felsöker Kontrollpanelens Portlet
г.
#jsp #liferay #tomcat7
#jsp #liferay #tomcat7
Вопрос:
Я надеюсь, что кто-нибудь может указать что-нибудь об этой проблеме. Я развернул два портлета из одного и того же проекта Liferay, один в панели управления, а другой в более общей категории «Добавить еще».
Но при просмотре их на портале, тот, который можно добавить на страницы, показывает, что портлет временно недоступен, а другой отображается в панели управления, но не показывает ничего, кроме заголовка.
Я просмотрел журнал в liferay — (сегодняшняя дата).журнал и ошибки показывают, что сервер не может найти jsp. Ошибки такие:
ERROR [http-bio-8080-exec-5][PortletRequestDispatcherImpl:115] javax.servlet.ServletException: Archivo JSP amp;quot;/registros/view.jspamp;quot; no encontrado
javax.servlet.ServletException: Archivo JSP amp;quot;/registros/view.jspamp;quot; no encontrado
at org.apache.jasper.servlet.JspServlet.handleMissingResource(JspServlet.java:412)
etc... etc...
для портлета в категории «Добавить еще» и для портлета в панели управления:
ERROR [http-bio-8080-exec-3][MVCPortlet:366] null is not a valid include
15:54:51,434 ERROR [http-bio-8080-exec-3][ComboServlet:92] javax.servlet.ServletException: Resource /css/EContinuaAdmin.css does not exist in caja- virtual-portlet
javax.servlet.ServletException: Resource /css/EContinuaAdmin.css does not exist in caja-virtual-portlet
at com.liferay.portal.servlet.ComboServlet.getResourceURL(ComboServlet.java:364)
etc... etc...
ERROR [http-bio-8080-exec-3][status_jsp:769] javax.servlet.ServletException: Resource /js/EContinuaAdmin.js does not exist in caja-virtual-portlet
javax.servlet.ServletException: Resource /js/EContinuaAdmin.js does not exist in caja- virtual-portlet
at com.liferay.portal.servlet.ComboServlet.getResourceURL(ComboServlet.java:364)
etc... etc...
А также для этого последнего портлета:
ERROR [http-bio-8080-exec-3][MVCPortlet:366] null is not a valid include
15:55:43,057 WARN [http-bio-8080-exec-3][code_jsp:128] {code="404", msg="/caja- virtual-portleticon.png", uri=/caja-virtual-portleticon.png}
15:57:48,762 WARN [http-bio-8080-exec-1][code_jsp:128] {code="404", msg="/caja- virtual-portleticon.png", uri=/caja-virtual-portleticon.png}
15:57:50,002 WARN [http-bio-8080-exec-3][code_jsp:128] {code="404", msg="/caja- virtual-portleticon.png", uri=/caja-virtual-portleticon.png}
15:58:12,180 ERROR [http-bio-8080-exec-7][MVCPortlet:366] null is not a valid include
15:58:12,934 ERROR [http-bio-8080-exec-7][ComboServlet:92] javax.servlet.ServletException: Resource /css/EContinuaAdmin.css does not exist in caja- virtual-portlet
javax.servlet.ServletException: Resource /css/EContinuaAdmin.css does not exist in caja-virtual-portlet
at com.liferay.portal.servlet.ComboServlet.getResourceURL(ComboServlet.java:364)
etc... etc...
Я могу понять большинство ошибок во втором случае, который я показал, потому что в проекте фактически нет таких файлов js или css, но я не понимаю, почему он не находит jsp.
Я покажу свой portlet.xml так что это понятно:
<portlet>
<portlet-name>caja-virtual</portlet-name>
<display-name>Caja Virtual</display-name>
<portlet-class>com.cide.cajaVirtual.EContinua.portlet.CajaVirtualPortlet</portlet-class>
<init-param>
<name>view-template</name>
<value>/registros/view.jsp</value>
</init-param>
Есть две папки, в которых у меня есть jsp: admin и registros, так почему это происходит. А также, что делать с другими ошибками, я не уверен. Должен ли я просто удалить EContinuaAdmin.css и EContinuaAdmin.js в папках js и css? Наконец, почему проект запрашивает эти файлы, мне непонятно, у меня есть только main.css и main.js в тех папках, которые Eclipse автоматически создает для проекта плагина liferay.
Дополнительно (и мне жаль, если это выглядит так, как будто это должен быть другой вопрос, просто я хочу показать все ошибки, потому что журнал слишком загадочный для меня, и я хочу отказаться от опций) Я вижу эти последние две ошибки в журнале, которые я не знаю, почему происходят:
ERROR [http-bio-8080-exec-2][DefaultTransactionExecutor:93] Application exception overridden by commit exception
org.springframework.orm.hibernate3.HibernateOptimisticLockingFailureException: Object of class [com.liferay.portal.model.impl.PortalPreferencesImpl] with identifier [11178]: optimistic locking failed; nested exception is org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [com.liferay.portal.model.impl.PortalPreferencesImpl#11178]
etc... etc...
ERROR [http-bio-8080-exec-2][PortalPreferencesImpl:192] org.springframework.orm.hibernate3.HibernateOptimisticLockingFailureException: Object of class [com.liferay.portal.model.impl.PortalPreferencesImpl] with identifier [11178]: optimistic locking failed; nested exception is org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [com.liferay.portal.model.impl.PortalPreferencesImpl#11178]
org.springframework.orm.hibernate3.HibernateOptimisticLockingFailureException: Object of class [com.liferay.portal.model.impl.PortalPreferencesImpl] with identifier [11178]: optimistic locking failed; nested exception is org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [com.liferay.portal.model.impl.PortalPreferencesImpl#11178]
at
etc... etc...
Ответ №1:
- проверьте, действительно ли у вашего развернутого плагина
/registros/view.jsp
(для tomcat он должен бытьwebapps/caja-virtual-portlet/registros/view.jsp
включен). Если нет, убедитесь, что он есть в вашем проекте.docroot/registros/view.jsp
- Вы также можете проверить свои
liferay-portlet.xml
пути, которые вы указываете — например, для css, js и значка. URL-адрес, который я вижу для вашего значка, показывает отсутствующий «/», который вы должны добавить к записи значка вliferay-portlet.xml
- Возможно, вы захотите выяснить
caja- virtual-portleticon.png
, откуда берутся пробелы в вашем журнале — похоже на разрыв строки после форматирования XML-файла.
Если это не поможет, попробуйте проверить, сработало ли развертывание так, как должно: например, если вы найдете все ресурсы, которые вы ожидаете в своем WAR-файле — они могут оказаться в каталогах, где Ant (или что бы вы ни создавали) их не ожидает.
Комментарии:
1. Спасибо за ваш ответ, в итоге я установил отдельную папку html в docroot, а затем позвонил
docroot/html/registros/view.jsp
Прямо сейчас, я уже не помню, как я ее настроил, но, похоже, у меня была неправильная структура папок. Впоследствии это сработало.
null
Путь разработчика portlet’ов под Liferay, использующего Service Builder, полон боли подводных камней. Сегодня хочу осветить решение, пожалуй, наиболее часто возникающей ошибки при разработке портлетов с использованием этой технологии.
Service Builder — это инструмент для кодогенерации service’ного слоя, который, по мнению разработчиков, уменьшает время разработки, путем написания xml файла «service.xml» и запуска «build-service», который по описанным в файле сущностям создаст весь необходимый код для доступа, хранения и представления данных.
Те, кто решил использовать Service Builder’ы в своих портлетах или вынужден заниматься поддержкой такого кода, могут столкнуться с ошибкой несоответствия контекста при вызове service’ных методов.
Лицезреть её можно в выводе stack trace’а в log’ах.
ERROR [PortletBeanLocatorUtil:38] BeanLocator is null for servlet context XXX-portlet ERROR [PortletServlet:97] javax.portlet.PortletException: com.liferay.portal.kernel.bean.BeanLocatorException: BeanLocator has not been set for servlet context XXX-portlet at javax.portlet.PortletException: com.liferay.portal.kernel.bean.BeanLocatorException: BeanLocator has not been set for servlet context XXX-portlet at com.liferay.portal.kernel.bean.PortletBeanLocatorUtil.locate(PortletBeanLocatorUtil.java:46)
BeanLocator is null… — признак того, что причина вашего недуга лежит в Service Builder’ах. Имея ошибку, можно приступить к её предотвращению.
Стоит ответить на вопрос: «К сервисному слою какого приложения мы пытаемся обратиться?». Если вы не знаете ответа на этот вопрос, то спусайтесь вниз по стеку вызовов до тех пор пока не встретите класс следующего типа
ru.myCompany.somePackage.service.SomethingLocalServiceUtil.method(SomethingLocalServiceUtil.java:99)
Определите к service’у какого портлета относится этот класс. Далее имеем одну из трех (пока я открыл только 3 случая проявления ошибки) ситуаций:
1) Мы пытаемся вызвать метод портлета с контекстом XXX-portlet, а он развернут с отличным от этого контекстом. Посмотрите файл WEB-INF/liferay-plugin-package.properties, если контекст отличается от имя-портлета-portlet, то там должно быть указано с каким контекстом должен быть задеплоен портлет(строка recomended-deployment-context=Something).
Важно: Чтобы портлет задеплоился с рекомендуемым контекстом, pluginName в pom.xml, если он имеется, должен иметь такое же значение. Поправьте контекст вызываемого портлета и переразверните его.
2)Мы пытаемся вызвать метод портлета, но используем неверный контекст. Проверьте используемый контекст в файле WEB-INF/liferay-plugin-package.properties. Он указан в свойстве required-deployment-contexts. Исправьте проблемное значение на правильное.
3) При сборке портлета, имеем jar-ник с другой версией Service Builder’а. Необходимо открыть зависимости портлета, найти нужный вам jar файл и посмотреть содержимое файла something.service.ClpSerializer. В методе getServletContextName() полю _servletContextName присваивается, используемый контекст, если он отличается от развернутого, то необходимо пересобрать service вызываемого портлета, если сборка вызываемого портлета затруднительна, то можно решить проблему, подложив в локальный репозиторий jar-ник с сервисами из развернутого вызываемого портлета с сервера приложений. Он находится в директории usingPortlet.war/WEB-INF/lib/usingPortlet-portlet-service.jar.
Надеюсь, что я помогу кому-нибудь решить проблему «BeanLocator is null for servlet context…». Удачной вам разработки!