在jsf中查找已知的键值对

时间:2010-11-29 14:15:15

标签: java jsf

我在我的JSF应用程序中使用的bean中有一个整数字段。 整数字段显示进程的状态,它可以是0,1或2。 我想要做的是自动将此值映射到相应的字符串表示(0-尚未处理,1-正在处理...等)或使用jsf以硬编码方式执行此操作。我不喜欢以另一种方式处理它,因为我使用的主要jsf bean包含几个hibernate模型,如果我选择另一种方式它会变得复杂。 谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

我建议你去i18n.

你的属性文件应该是这样的。

message_en.properties

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

答案 1 :(得分:0)

有几种方式。

  1. 使用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. 在EL中使用条件运算符?:

    <h:outputText value="#{bean.status == 0 ? 'Not Processed' : bean.status == 1 ? 'Being processed' : 'Finished processing'}" />
    
  3. 在某个地方使用应用程序范围Map<Integer, String>

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

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

    基本上bean.getStatuses().get(bean.getStatus())