我现在坐在遗留系统上。我有一些域对象只持有某些实体的密钥,现在我想知道显示实体值而不是给定密钥的最佳方法是什么。
这可以通过<h:outputText />
代码的转换器完成吗?
E.g。
domainObject的
public class DomainObject {
private String keyOfEntityA;
// getter/setter
}
EntityA
public class EntityA {
private String key;
private String value;
// getter / setter
}
JSF
<h:outputText value="#{controller.domainObject.keyOfEntityA}" />
我不想在这种情况下显示密钥,我想要对象并且应该显示value
属性。
有没有一种优雅的方法来实现这一点,还是我必须通过包装类扩展我的DomainObject,它提供了所需的对象?
答案 0 :(得分:3)
将EntityA
替换为Map<String, String>
,以便您可以使用
<h:outputText value="#{controller.map[controller.domainObject.key]}" />
或在Map<String, EntityA>
中使用EntityA
的密钥作为地图密钥将其全部抓取,以便您可以
<h:outputText value="#{controller.entities[controller.domainObject.key].value}" />
我的印象是EntityA
从一开始就应该是Map<String, String>
,或java.util.Properties
对象,如果他们持有应用范围的配置设置,或者ResourceBundle
如果它们代表本地化内容,则包含一堆属性文件。