2010-11-29 2 views
0

JSFアプリケーションで使用するBeanに整数フィールドがあります。 整数フィールドにはプロセスのステータスが表示され、0,1,2のいずれかになります。 私はこの値を対応するString表現に自動的にマッピングします(0-未処理、1-処理された...など)、jsfを使用してハードコーディングされた方法でこれを行います。私は別の方法で処理する方が好きではありません。なぜなら、私が使用する主なjsf beanには複数の休止状態のモデルが含まれていて、別の方法を選ぶと複雑になるからです。 助けてくれてありがとう!jsfの既知のキーと値のペアの参照

答えて

0

は、私はあなたのようになるはずi18n.

あなたの財産ファイルのために行くことをお勧め。

message_en.properties

process_in_progress=Process is under prgress 
process_failed=Process failed to execute. 
+1

「i18n」ではなく「i18n」と呼ばれます。 – BalusC

+0

@BalusCありがとう、私が理解しているように、国際化iとnの間には18文字 –

0

いくつかの方法。

  • 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}" /> 
    
  • ELで条件演算子?:を使用してください。

    <h:outputText value="#{bean.status == 0 ? 'Not Processed' : bean.status == 1 ? 'Being processed' : 'Finished processing'}" /> 
    
  • Map<Integer, String>のどこかでアプリケーションを使用してください。 bean.getStatuses().get(bean.getStatus())は基本的にない

    <h:outputText value="#{bean.statuses[bean.status]}" /> 
    

    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. 
    }