2011-11-02 8 views
14
<p:graphicImage value="#{resource['images:primefaces-ui/#{car.manufacturer}.jpg']}"/> 

Vorrei calcolare prima el interno e quindi calcolare il percorso utilizzando l'API di risorsa. Ho provato il tag <c:set> ma la sua variabile è anche un EL, quindi non fa alcuna differenza.nidificazione di espressioni el in JSF per risorsa API

risposta

23

Nella versione EL 2.2 corrente, non è possibile annidare espressioni EL né concatenare variabili EL in questo modo. Utilizzare <c:set> per preparare la chiave dinamica prima di utilizzarlo in un'altra espressione EL semplicemente inlining l'espressione EL in una stringa:

<c:set var="resourceName" value="images:primefaces-ui/#{car.manufacturer}.jpg" /> 
<p:graphicImage value="#{resource[resourceName]}"/> 

Un'alternativa è semplicemente utilizzando library e name attributi invece di generare un URL basato su quelli via #{resource} mappatura:

<p:graphicImage library="images" name="primefaces-ui/#{car.manufacturer}.jpg" /> 

Aggiornamento: dal EL 3.0, è possibile utilizzare l'operatore += a String-c oncatenate EL variabili, se davvero non è possibile utilizzare library/name per qualche motivo.

<p:graphicImage value="#{resource['images:primefaces-ui/' += car.manufacturer += '.jpg']}"/> 
+0

Questo si basa su un dettaglio di implementazione ui: param però - non promette di impostare la variabile nel contesto del modello corrente. Farò riferimento alla risposta di BalusC: http://stackoverflow.com/a/20376916/1341535 –