2012-06-22 10 views
8

È necessario ottenere l'autorizzazione per le risorse utilizzando il nome del portlet.Come ottenere l'ID portlet utilizzando il nome del portlet in Liferay?

Avrò il nome del portlet non l'ID.

Nome autorizzazione di risorsa per un portlet è l'ID del portlet. Ho controllato la tabella Portlet, ha solo l'ID e altre informazioni. Dove saranno gli altri attributi del portlet salvati ?.

C'è un modo per ottenere l'ID del portlet utilizzando il nome del portlet. Ho un workaroud per ottenere tutti i portlet e confrontare, ma se posso ottenere direttamente l'id del portlet usando il nome del portlet sarà utile.

E 'urgente, se qualcuno ne conosce la risposta, sarà di grande aiuto.

Grazie in anticipo

risposta

11

Se si guarda da vicino di come la portlet Id viene generato in base al nome del portlet, si otterrebbe la risposta.

È uno schema costante seguito, quindi è possibile costruire l'ID portlet come liferay lo fa se si ha il nome. Liferay costruisce anche l'ID con l'aiuto del nome del portlet.

modello di portlet-id: <portletname in xml>_WAR_<servlet context name i.e. the war file without any special characters such as the hyphen>

Ad esempio: Se il nome del portlet è MyWork definito nel portlet.xml e il file generato nella cartella webapps (se si utilizza Tomcat) è MyWork-portlet quindi la risultante Id sarà essere MyWork_WAR_MyWorkportlet.

Ora se si dispone del codice sorgente liferay, è possibile consultare il metodo PortletLocalServiceImpl.

Edit:
Se si desidera trovare i portlet in una pagina particolare (data la friendly-url della pagina) allora si può trovare questo answer utile.

+0

Thank You Prakash. Ma come faccio a sapere il nome di contesto servlet che è il nome del file di guerra se ho dispiegato più guerre. Sapevo come è stato costruito l'id del portlet. Avrò molti portlet parte di diversi contesti servlet. – Vijayalakshmi

+0

Guerre multiple dello stesso portlet nella stessa istanza? o Una guerra con molti portlet confezionati? Se è possibile elaborare l'ambiente, sarebbe utile –

+0

Una guerra con più portlet confezionati che sono instancabili. Ho anche osservato che l'id del portlet avrà le informazioni di istanza aggiunte. come gestire in quel caso. Se lo distribuisco in server diversi, l'id di istanza sarà diverso. – Vijayalakshmi

1

Si può provare questo:

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

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

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

Non dimenticare:

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