J'ai un champ entier dans le bean que j'utilise dans mon application JSF. Le champ integer montre l'état du processus et il peut être 0, 1 ou 2. Ce que je voudrais faire est de mapper automatiquement cette valeur à la représentation String correspondante (0 - pas encore traité, 1 étant traité ... etc) ou le faire de manière codée en utilisant jsf. Je ne préfère pas le gérer d'une autre manière car le bean jsf principal que j'utilise contient plusieurs modèles d'hibernation et ça va devenir compliqué si j'opte d'une autre façon. Merci pour l'aide!recherche d'une paire clé-valeur connue dans jsf
0
A
Répondre
0
Je vous suggère d'aller pour i18n.
votre fichier de propriétés devrait ressembler.
message_en.properties
process_in_progress=Process is under prgress
process_failed=Process failed to execute.
0
Plusieurs façons.
Utilisez l'attribut
rendered
.<h:outputText value="Not processed" rendered="#{bean.status == 0}" /> <h:outputText value="Being processed" rendered="#{bean.status == 1}" /> <h:outputText value="Finished processing" rendered="#{bean.status == 2}" />
Utiliser opérateur conditionnel
?:
dans EL.<h:outputText value="#{bean.status == 0 ? 'Not Processed' : bean.status == 1 ? 'Being processed' : 'Finished processing'}" />
Utilisez un-large application
Map<Integer, String>
quelque part.public class Bean { private static Map<Integer, String> statuses = new HashMap<Integer, String>(); static { statuses.put(0, "Not processed"); statuses.put(1, "Being processed"); statuses.put(2, "Finished processing"); } // Add getter. }
avec
<h:outputText value="#{bean.statuses[bean.status]}" />
qui fait essentiellement
bean.getStatuses().get(bean.getStatus())
.
Il s'appelle "i18n", pas "i18th". – BalusC
@BalusC Merci, c'était le type, la raison derrière les phénomènes i18n comme je l'ai compris est qu'il y a 18 caractères entre l'internationalisation i et n –