JSF 2 - 显示对象的值,而不是键

时间:2011-08-30 16:02:55

标签: java jsf-2

我现在坐在遗留系统上。我有一些域对象只持有某些实体的密钥,现在我想知道显示实体值而不是给定密钥的最佳方法是什么。

这可以通过<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,它提供了所需的对象?

1 个答案:

答案 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如果它们代表本地化内容,则包含一堆属性文件。