【发布时间】:2011-05-17 07:35:05
【问题描述】:
我在 JSF 应用程序中使用的 bean 中有一个整数字段。 整数字段显示进程的状态,它可以是 0、1 或 2。 我想做的是要么自动将此值映射到相应的字符串表示形式(0- 尚未处理,1- 正在处理......等),要么使用 jsf 以硬编码的方式执行此操作。我不喜欢以另一种方式处理它,因为我使用的主要 jsf bean 包含几个休眠模型,如果我选择另一种方式,它会变得复杂。 感谢您的帮助!
【问题讨论】:
我在 JSF 应用程序中使用的 bean 中有一个整数字段。 整数字段显示进程的状态,它可以是 0、1 或 2。 我想做的是要么自动将此值映射到相应的字符串表示形式(0- 尚未处理,1- 正在处理......等),要么使用 jsf 以硬编码的方式执行此操作。我不喜欢以另一种方式处理它,因为我使用的主要 jsf bean 包含几个休眠模型,如果我选择另一种方式,它会变得复杂。 感谢您的帮助!
【问题讨论】:
几种方法。
使用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>。
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())。
【讨论】:
我建议你去i18n.
你的属性文件应该是这样的。
message_en.properties
process_in_progress=Process is under prgress
process_failed=Process failed to execute.
【讨论】: