我正在努力在诸如inputtext,selectonemenu等的primefaces小部件中显示hashmap的内容。
我已定义了hasmaps
private Map<String, String> subIdMap = new HashMap<String, String>();
private Map<String, Map<String, String>> dataMap = new HashMap<String, Map<String, String>>();
//他们的吸气者和制定者。
SubIdMap包含键和值
对于id 001
对于id = 002 private Map<String, String> subIdMap = new HashMap<String, String>();
subIdMap.put("id", "001");
subIdMap.put("name", "Alexender");
subIdMap.put("age", "24");
subIdMap.put("sex", "Male");
subIdMap.put("country", "Greece");
dataMap是一个地图,其ID为键,subIdMap为其值 我有一个页面,如果用户点击id 001,它将从bean获取id = 001或id = 002的数据并显示在xhtml页面中。我无法在xhtml页面 段 xhtml页面 我需要一些指示。 private Map<String, String> subIdMap = new HashMap<String, String>();
subIdMap.put("id", "002");
subIdMap.put("name", "John");
subIdMap.put("age", "25");
subIdMap.put("sex", "Male");
subIdMap.put("country", "US");
private Map<String, Map<String, String>> dataMap = new HashMap<String, Map<String, String>>();
dataMap.put("001", subIdMap);
or
dataMap.put("002", subIdMap);
@ManagedBean(name = "sampleBean")
@ViewScoped
public class SampleBean implements Serializable{
private Map<String, String> subIdMap = new HashMap<String, String>();
private Map<String, Map<String, String>> dataMap = new HashMap<String, Map<String, String>>();
public SampleBean() {
subIdMap.put("id", "001");
subIdMap.put("name", "Alexender");
subIdMap.put("age", "24");
subIdMap.put("sex", "Male");
subIdMap.put("country", "Greece");
dataMap.put("001",subIdMap);
}
/**
* @return the subIdMap
*/
public Map<String, String> getSubIdMap() {
return subIdMap;
}
/**
* @param subIdMap the subIdMap to set
*/
public void setSubIdMap(Map<String, String> subIdMap) {
this.subIdMap = subIdMap;
}
/**
* @return the dataMap
*/
public Map<String, Map<String, String>> getDataMap() {
return dataMap;
}
/**
* @param dataMap the dataMap to set
*/
public void setDataMap(Map<String, Map<String, String>> dataMap) {
this.dataMap = dataMap;
}
}
<p:inputText id="textId" value="............." />
<p:selectOneMenu id="selectId" value="................" />
答案 0 :(得分:3)
要解决您的问题,请在您的bean中添加一个get方法,以便从地图中获取KeySet,如
public List getKeyList() {
return new ArrayList(dataMap.keySet());
}
然后在jsf页面中放置repeat标记以迭代并显示键
<ui:repeat value="#{newJSFManagedBean.keyList}" var="key">
Key : <h:outputText value="#{key}"/>
</ui:repeat>
但是我不建议在地图中使用地图,而是建议创建一个名为Person
的简单类,并在那里保留值,然后只使用像
private Map<String, Person> dataMap = new HashMap();
希望你能继续。
答案 1 :(得分:0)
你可以像在
中那样在常规游戏中侥幸逃脱 value = "#{yourBean.map.firstKey.nestedKey}"
但我必须说你的设计不推荐。完全没有。每个实体的地图地图?如果您只是将所有数据封装在一个类中,那么您的工作将变得更加简单。