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