sulla mia pagina JSF2, sto usando i messaggi di errore internazionalizzati.JSF <h: OutputFormat>: valori di matrice uso come parametri
Nel mio backing bean, sto mettendo i messaggi in ambito Flash:
flash.put("error", exception.getType());
Nella pagina, questa stringa viene tradotta in questo modo:
<h:outputText value="#{bundle[flash.error]}"/>
funziona bene.
ORA voglio anche essere in grado di inserire (un numero arbitrario di) parametri nel testo del messaggio, che viene inserito nei segnaposti nella proprietà i18n nel mio message.properties. Pertanto, sto mettendo i parametri come un array di stringhe in ambito Flash, in questo modo:
//exception.getParameters returns String[]
flash.put("errorParams", exception.getParameters())
ora voglio anche essere in grado di utilizzare questo array String come parametri per un elemento OutputFormat, per inserirli in una proprietà come Welcome, {0} {1}
. così ho cercato di raggiungere questo obiettivo utilizzando ui: repeat:
<h:outputFormat value="#{bundle[flash.error]}" rendered="#{! empty flash.error}" class="invalid">
<ui:repeat value="#{flash.errorParams}" var="_param">
<f:param value="#{bundle[_param]}"/>
<!-- also doesn't work: <f:param value="#{_param}"/>-->
</ui:repeat>
</h:outputFormat>
Purtroppo, il valore param viene ignorato e i segnaposto del i18n-proprietà non sono sostituiti, in modo che l'output di rendering è Welcome, {0} {1}
. Quando si utilizza un ripetitore "normale", visualizzando gli elementi dell'array come un testo di output, funziona. Quindi il tag outputFormat non sembra supportare l'uso di una ripetizione da bambino. Dannazione, così vicino;) Qualcuno sa un buon modo per fare quello che voglio, o c'è qualche libreria di componenti di supporto una cosa del genere?
Funziona come un fascino. Grazie mille!!! – ifischer
Prego. Interessante caso d'uso dello scope flash btw. – BalusC
Sì, l'ho appena scoperto qualche giorno fa. Ho avuto problemi con FacesMessages in quanto non sopravvivono redirect (che faccio spesso), quindi sto utilizzando il flash-Scope, invece, che è un sostituto ideale. – ifischer