【问题标题】:lookup for a known key-value pair in jsf在 jsf 中查找已知的键值对
【发布时间】:2011-05-17 07:35:05
【问题描述】:

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

【问题讨论】:

    标签: java jsf


    【解决方案1】:

    几种方法。

    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&lt;Integer, String&gt;

      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())

    【讨论】:

      【解决方案2】:

      我建议你去i18n.

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

      message_en.properties

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

      【讨论】:

      • 它叫做“i18n”,而不是“i18th”。
      • @BalusC 谢谢,这是类型,据我了解,i18n 现象背后的原因是国际化 i 和 n 之间有 18 个字符
      猜你喜欢
      • 2013-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-31
      • 2015-01-17
      • 1970-01-01
      相关资源
      最近更新 更多