Ask Questions and Find Answers
Important:
Ask is now read-only. You can review any existing questions and answers, but not add anything new.
But - don't panic! While ask is no more, we've replaced it with discuss - the new Liferay Discussion Forum! Read more here here or just visit the site here:
discuss.liferay.com
Come si fa a includere una portlet nel menu CONFIGURATION ?
Salve a tutti,
Sto muovendo i primi passi nello sviluppo con Liferay 7.1 e per l'esercizio vorrei riuscir a includere la mia neoata portlet
nel menu configuration del del sito padre.

Come si fa?
Sarà che sto cercando male online, ma non trovo nulla di supporto.
Grazie
Sto muovendo i primi passi nello sviluppo con Liferay 7.1 e per l'esercizio vorrei riuscir a includere la mia neoata portlet
nel menu configuration del del sito padre.

Come si fa?
Sarà che sto cercando male online, ma non trovo nulla di supporto.
Grazie

Dopo un po di ore perse sono arrivato alla soluzione, ma questa ancora necessita di una spiegazione teorica che non ho; sper che qualcuno possa darmela.
Seguendo la documentazione ufficiale ho trovato che si può pubblicare una portlet nel pannello di amministrazione del sito
definendo per essa una PanelApp (public class XxxxPanelApp extends BasePanelApp ) e definendo a modo le annotation @Component.
DOCS
Questa soluzione per ore comunque non mi ha funzionato perchè io modificavo una portlet già fatta per altri scopi e contenente un campo iniettato
Consultando più attentamente la documentazione e gli esempi ho notato che invece loro suggeriscono di usarlo cosi:
Questo contravviene a quanto ci è stato spiegato al corso che mi ha introdotto a questo portale ma non solo, contravviene anche il commento stesso sulla classe XxxLocalService
confermo empiricamente che se inietto la classe Util, la portlet non parte neppure....
Sapresti spiegarmi come mai?
Grazie mille.
Seguendo la documentazione ufficiale ho trovato che si può pubblicare una portlet nel pannello di amministrazione del sito
definendo per essa una PanelApp (public class XxxxPanelApp extends BasePanelApp ) e definendo a modo le annotation @Component.
DOCS
Questa soluzione per ore comunque non mi ha funzionato perchè io modificavo una portlet già fatta per altri scopi e contenente un campo iniettato
public class XxxPortlet extends MVCPortlet {
@Reference(unbind="-")
private XxxLocalServiceUtil _xxxLocalServiceUtil;
public XxxLocalServiceUtil getXxxLocalServiceUtil() { return _xxxLocalServiceUtil; }
public void setXxxLocalServiceUtil(XxxLocalServiceUtil clsu) { _xxxLocalServiceUtil = clsu; }
Consultando più attentamente la documentazione e gli esempi ho notato che invece loro suggeriscono di usarlo cosi:
public class XxxPortlet extends MVCPortlet {
private XxxLocalService _xxxLocalService;
public XxxLocalService getXxxLocalService() { return _xxxLocalService; }
@Reference(unbind="-")
public void setXxxLocalService(XxxLocalService cls) { _xxxLocalService = cls; }[b][/b]
cioè di iniettare direttamente l'interfaccia XxxLocalService invece della classe Util.Questo contravviene a quanto ci è stato spiegato al corso che mi ha introdotto a questo portale ma non solo, contravviene anche il commento stesso sulla classe XxxLocalService
[i][/i]public interface XxxLocalService extends BaseLocalService,
PersistedModelLocalService {
/*
* NOTE FOR DEVELOPERS:
* Never modify or reference this interface directly. Always use {@link XxxLocalServiceUtil} to access the xxx local service. Add custom service methods to {@link it.treeffe.feedback.service.impl.XxxLocalServiceImpl} and rerun ServiceBuilder to automatically copy the method declarations to this interface.
*/[i][/i]
confermo empiricamente che se inietto la classe Util, la portlet non parte neppure....
Sapresti spiegarmi come mai?
Grazie mille.

Qua bisogna ripassare i fondamentali del service builder di Liferay e della nuova architettura basata su OSGi..
E' corretto l'uso di un riferimento XxxLocalService e non contravviene affatto il commento "Never modify or reference this interface directly".
Infatti tu non la sta istanziando direttamente ma tramite @Reference ti viene servita una istanza corretta secondo il lifecycle e la risoluzione delle dipendenze osgi.
Consiglio questa lettura: https://www.manning.com/books/osgi-in-action
bye
E' corretto l'uso di un riferimento XxxLocalService e non contravviene affatto il commento "Never modify or reference this interface directly".
Infatti tu non la sta istanziando direttamente ma tramite @Reference ti viene servita una istanza corretta secondo il lifecycle e la risoluzione delle dipendenze osgi.
Consiglio questa lettura: https://www.manning.com/books/osgi-in-action
bye
Copyright © 2025 Liferay, Inc
• Privacy Policy
Powered by Liferay™