我需要类似于属性包的东西来抛出键值对。
我想创建这样的对象列表,在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()
方法。
在我的案例中是否有任何解决方法,或者我真的需要定义特殊课程以使生活更轻松? 感谢。
答案 0 :(得分:6)
如果您想要一个简单的键/值表,那么HashMap可能就是您要找的。 p>
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");
}
};