我在使用JSF在Facelets中显示一些数据时遇到问题.我有一个哈希映射列表:
List<Map<String, String>> persons = new LinkedList<Map<String,String>>();
public List getPersons() {
return this.persons;
}
Run Code Online (Sandbox Code Playgroud)
我从数据库得到如下:
while(rs.next()) {
Map<String,String> result = new HashMap<String,String>();
result.put("name", rs.getString(1));
result.put("category", rs.getString(2));
this.persons.add(result);
}
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是如何在xhtml中显示每个地图的信息.我尝试使用ui:repeat但是错了所以我需要帮助.我必须得到名字和家人的吸气,但我该如何添加呢?
<ui:repeat value="#{class.persons}" var="persons">
<h:outputText value="#{persons['name'}"/>
<h:outputText value="#{persons['family'}"/>
</ui:repeat>
Run Code Online (Sandbox Code Playgroud)
我希望你理解我的问题,并帮助我解决它.提前致谢!
因此#{persons}是一个Map<String, String>。您可以像普通 Javabean 一样通过键访问映射值。所以#{person.name}才会回来map.get("name")。
所以,这应该做:
<ui:repeat value="#{class.persons}" var="person">
<h:outputText value="#{person.name}"/>
<h:outputText value="#{person.family}"/>
</ui:repeat>
Run Code Online (Sandbox Code Playgroud)
(我只是重命名persons为person,因为它本质上只代表一个人)
顺便说一句,以下方法也是有效的,如果您有包含句点的映射键,这实际上是唯一的方法:
<ui:repeat value="#{class.persons}" var="persons">
<h:outputText value="#{persons['name']}"/>
<h:outputText value="#{persons['family']}"/>
</ui:repeat>
Run Code Online (Sandbox Code Playgroud)
(你看,你很接近,你只是忘记了右大括号)
然而,通常的做法是创建一个 Javabean 类,而不是创建一个Map实际上代表实体的 Javabean 类。
public class Person {
private String name;
private String family;
// ...
// Add/generate getters/setters and other boilerplate.
}
Run Code Online (Sandbox Code Playgroud)
并将其提供List<Person>给视图。
| 归档时间: |
|
| 查看次数: |
5978 次 |
| 最近记录: |