2012-01-20 3 views
6

Quindi, il mio modello include un footer.xhtmlCome includere condizionatamente un file nel mio modello usando JSF e Facelets?

<ui:include src="/WEB-INF/testtaker/Footer.xhtml"/> 

Quello che voglio fare è di cambiare il piè di pagina sulla base di alcuni utenti pref a diverso piè di pagina _ ???. File XHTML.

Quindi, mi piacerebbe fare qualcosa di simile:

<ui:include src="/WEB-INF/testtaker/Footer_001.xhtml"> 
     Content from original Footer.xhtml 
</ui:include> 

e se Footer_001.xhtml non esiste, allora lascio l'utilizzo dei contenuti tra i tag, altrimenti utilizzare il contenuto del file .

So che questo sembra un po 'strano, ma questo risolverà un enorme problema di personalizzazione del mio sito esistente senza dover apportare modifiche a tutto il luogo. Inoltre non sono sicuro che il file esisterà prima o poi.

Qualche idea?

risposta

4

È possibile utilizzare EL in <ui:include src>.

<ui:include src="/WEB-INF/testtaker/Footer#{user.prefs.footerId}.xhtml" /> 

Se #{user.prefs.footerId} restituisce null o una stringa vuota, che diventeranno solo Footer.xhtml.

+0

Ah, sì. Sto pensando di fare qualcosa del genere. Ma il problema arriva quando lo src si risolve in qualcosa come Footer_001.xhtml e quel file non esiste (ancora) quindi voglio includere il contenuto "predefinito" di Footer.xhtml. Ha senso? :) –

+1

Perché dovresti avere un ID del footer non valido in primo luogo? Questo è un input controllato al 100%? (in tal caso, sei a conoscenza dei vettori di attacco in questo caso?) Perché non fornire semplicemente all'utente finale un dropdown con gli ID di footer disponibili? Ad ogni modo, è possibile controllare il costruttore di prefs o il metodo getter se esiste il footer. Puoi farlo controllando se 'ExternalContext # getResource()' restituisce 'null' o no. Se non esiste, restituisce invece 'null'. – BalusC

+0

Grazie. Ha funzionato alla grande So che è un po 'strano cercare di includere un file che non esiste ma abbiamo dei requisiti stupidi. Ad ogni modo, il tuo suggerimento ci porta verso la soluzione giusta. Grazie! –