2010-11-29 19 views
0

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

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. 
+1

Il s'appelle "i18n", pas "i18th". – BalusC

+0

@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 –

0

Plusieurs façons.

  1. 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}" /> 
    
  2. Utiliser opérateur conditionnel ?: dans EL.

    <h:outputText value="#{bean.status == 0 ? 'Not Processed' : bean.status == 1 ? 'Being processed' : 'Finished processing'}" /> 
    
  3. 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()).