bloggers bloggers

Marco Napolitano
Messaggi: 68
Stelle: 0
Data: 15/11/17
Jader Jed Francia
Messaggi: 50
Stelle: 0
Data: 22/09/17
Ezio Lombardi
Messaggi: 9
Stelle: 0
Data: 23/06/17
Chiara Mambretti
Messaggi: 25
Stelle: 0
Data: 27/02/17
Serena Traversi
Messaggi: 3
Stelle: 0
Data: 21/07/16
Francesco Falanga
Messaggi: 8
Stelle: 0
Data: 14/06/16
Antonio Musarra
Messaggi: 2
Stelle: 0
Data: 18/11/13
Simone Celli Marchi
Messaggi: 6
Stelle: 0
Data: 09/07/13
marcello marangio
Messaggi: 4
Stelle: 0
Data: 05/07/13
Marco Mancini
Messaggi: 1
Stelle: 0
Data: 05/06/13
Indietro

Specificare le label delle colonne di ordinamento su Liferay DXP

Liferay DXP ha introdotto una struttura completamente nuova per la visualizzazione della toolbar presente all'interno di un CRUD, attraverso la nuova famiglia di taglib <liferay-frontend />.

In particolare, per ordinare le colonne di un SearchContainer è ora necessario fare così:

<liferay-frontend:management-bar searchContainerId="myEntries">
    <liferay-frontend:management-bar-buttons>
    [...]
    </liferay-frontend:management-bar-buttons>

    <liferay-frontend:management-bar-filters>
        <liferay-frontend:management-bar-navigation [...] />

        <liferay-frontend:management-bar-sort
            orderByCol="<%= orderByCol %>"
            orderByType="<%= orderByType %>"
            orderColumns='<%= new String[] { "createDate", "name", "title", ...} %>'
            portletURL="<%= PortletURLUtil.clone(portletURL, renderResponse) %>"
        />
    </liferay-frontend:management-bar-filters>
</liferay-frontend:management-bar>

La taglib liferay-frontend:management-bar-sort viene configurata con l'ordinamento corrente e con l'elenco dei nomi dei campi su cui si vuole ordinare; dopodichè si occupa di renderizzare a video tutto l'occorrente per il suo funzionamento.

La taglib però accetta i nomi dei campi come array di stringhe e li usa anche come chiavi di traduzione; peccato che, in base allo standard di prodotto, i nomi composti da più parole (come ad esempio createDate) abbiano una chiave di traduzione diversa dal nome stesso (ad esempio create-date) e pertanto la tablig non è in grado di localizzare correttamente il testo. Purtroppo non esiste un altro attributo per specificare le label...

Come si fa quindi a specificare una label per i nomi composti da più parole o semplicemente una label diversa dal nome del campo stesso? Fortunatamente la cosa è molto semplice: basta passare come parametro una mappa anzichè un array di stringhe:

<%
Map<String, String> orderColumns = new HashMap<String, String>();
orderColumns.put("createDate", "create-date");
orderColumns.put("name", "full-name");
orderColumns.put("title", "title");
%>

<liferay-frontend:management-bar-sort
    orderByCol="<%= orderByCol %>"
    orderByType="<%= orderByType %>"
    orderColumns="<%= orderColumns %>"
    portletURL="<%= PortletURLUtil.clone(portletURL, renderResponse) %>"
/>

In pratica la chiave della mappa rappresenta il nome del campo, mentre il valore rappresenta la chiave di traduzione da utlizzare.

Commenti
Nessun commento. Vuoi essere il primo.