Jul 30, 2010

Εμφανίζοντας παραμετρικά μηνύματα στο JSF

Στο ADF έργο στο οποίο συμμετέχω αυτό τον καιρό, τα μηνύματα λαθών είναι αποθηκευμένα σε property files, με την εξής ιδιοτροπία για τις παραμέτρους: ξεκινούν από την τιμή ένα (1). Για παράδειγμα:

errorMsg.1001=Cannot assign value:{1} to field:{2}

Ένα από τα JSF components που υποστηρίζουν παραμέτρους, είναι το outputFormat για την εμφάνιση κειμένου. Εάν γράφαμε τον εξής κώδικα:

<h:outputFormat value="#{viewcontrollerBundle['errorMsg.1001']}" id="of1">
<f:param value="20.2" id="p1"/>
<f:param value="Salary" id="p2"/>

</h:outputFormat>

Τότε θα εμφανιζόνταν το ακόλουθο αποτέλεσμα.

Με άλλα λόγια, μόνο μια παράμετρος λαμβάνεται υπόψη. Αυτό έχει να κάνει με το γεγονός, ότι το JSF περιμένει τις παραμέτρους να ξεκινούν από την τιμή μηδέν. Ένα τέχνασμα προκειμένου να επιτύχουμε σωστή συμπεριφορά, είναι να προσθέσουμε άλλη μια (άχρηστη) παράμετρο στη λίστα μας, ώστε να καταλάβει τη θέση μηδέν. Δηλαδή:

<h:outputFormat value="#{viewcontrollerBundle['errorMsg.1001']}" id="of1">
<f:param value="dummy" id="p0"/>
<f:param value="20.2" id="p1"/>

<f:param value="Salary" id="p2"/>

</h:outputFormat>

No comments: