【问题标题】:JSF 2 - show value of object, instead of keyJSF 2 - 显示对象的值,而不是键
【发布时间】:2011-08-30 16:02:55
【问题描述】:

我现在坐在旧系统上。我有一些仅包含某些实体键的域对象,现在我想知道显示实体值而不是给定键的最佳方法是什么。

这可以通过<h:outputText /> 标签的转换器来完成吗?

例如

域对象

public class DomainObject {

    private String keyOfEntityA;

    // getter/setter

}

实体A

public class EntityA {

private String key;
private String value;

// getter / setter

}

JSF

<h:outputText value="#{controller.domainObject.keyOfEntityA}" />

在这种情况下我不想显示密钥,我想要显示对象和 value 属性。

是否有一种优雅的方式来实现这一点,还是我必须通过提供所需对象的包装类来扩展我的 DomainObject?

【问题讨论】:

  • 您能否发布一些相关代码以更清楚地了解您要做什么?
  • 只是想知道,他们持有什么样的数据?看起来好像您要重新发明 JSF 内置的国际化/本地化。
  • 不,这与国际化无关。这些对象保存着由手写 SQL 语句映射的产品信息......这是一团糟

标签: java jsf-2


【解决方案1】:

EntityA 替换为Map&lt;String, String&gt; 以便您可以使用

<h:outputText value="#{controller.map[controller.domainObject.key]}" />

或将它们全部放在Map&lt;String, EntityA&gt; 中,并将EntityA 的键作为映射键,以便您可以这样做

<h:outputText value="#{controller.entities[controller.domainObject.key].value}" />

我的印象是,EntityA 从一开始就应该是一个 Map&lt;String, String&gt;,或者如果它们持有应用程序范围的配置设置,则应该是一个 java.util.Properties 对象,或者如果它们拥有一堆属性文件,则可能是一个带有一堆属性文件的 ResourceBundle表示本地化内容。

【讨论】:

  • 不错的方法,我会走这条路。谢谢 BalusC
猜你喜欢
  • 2015-08-27
  • 2014-10-02
  • 2015-06-26
  • 2013-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-14
  • 1970-01-01
相关资源
最近更新 更多