用于PHP的StdClass的Java模拟

时间:2013-01-29 12:16:36

标签: java php jsf java-ee

我需要类似于属性包的东西来抛出键值对。 我想创建这样的对象列表,在bean中初始化它们然后使用列表在JSF模板中呈现表。 我知道该怎么做,但我想避免为这种情况创建一些特殊的类,比如OrderLineItem和使用List<OrderLineItem>。 我不想定义新的类。

在PHP中,我可以使用StdClass StdClass是PHP中一个文档稀疏的类,它没有预定义的成员。

$object = new StdClass;
$object->foo = 'bar';

但据我所知,Primefaces <p:dataTable>列表项必须是带有getter的对象。 如果我想引用<h:outputText value="#{item.title}" />,我的列表对象应该有getTitle()方法。

在我的案例中是否有任何解决方法,或者我真的需要定义特殊课程以使生活更轻松? 感谢。

4 个答案:

答案 0 :(得分:6)

如果您想要一个简单的键/值表,那么HashMap可能就是您要找的。

Map<String, String> myMap = new HashMap<>();

myMap.put("foo", "bar");

System.out.println(myMap.get("foo")); // outputs "bar"

此示例将字符串与字符串匹配,但您可以使用HashMaps将任何类型映射到任何其他类型。您甚至可以创建一个Map<Object, Object>来创建一个将任何东西映射到任何东西的弱类型地图。但对于大多数用例,您宁愿使用更专业的表单。

答案 1 :(得分:4)

您需要的是Map

您可以非常轻松地存储键值对:

Map<KeyClass, ValueClass> myMap = new HashMap<KeyClass, ValueClass>();

使用put方法将数据放入其中。如果您使用简单的String值,它将是这样的:

myMap.put("key", "value");

答案 2 :(得分:1)

我不知道我是否理解你。但我认为你的意思是SelectItem或JsfMap。

答案 3 :(得分:1)

我建议使用匿名类:

return new HashMap<String, String>() {
  {
    this.put("key", "value");
  }
};