gpt4 book ai didi

jsf - 如何在 ui :repeat? 中显示 HashMap 列表

转载 作者:行者123 更新时间:2023-12-04 15:26:02 24 4
gpt4 key购买 nike

我在使用 JSF 在 Facelets 中显示一些数据时遇到问题。我有哈希图列表:

List<Map<String, String>> persons = new LinkedList<Map<String,String>>();

public List getPersons() {
return this.persons;
}

我从数据库中得到如下:
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);
}

所以,我的问题是如何在 xhtml 中显示每个 map 的信息。我尝试使用 ui:repeat但这是错误的,所以我需要帮助。我必须有名字和家庭的 setter/getter ,但我应该如何添加它?
<ui:repeat value="#{class.persons}" var="persons">   
<h:outputText value="#{persons['name'}"/>
<h:outputText value="#{persons['family'}"/>
</ui:repeat>

我希望你理解我的问题并帮助我解决它。提前致谢!

最佳答案

#{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>

(我只将 persons 重命名为 person ,因为它本质上只代表一个人)

顺便说一下,以下方法也是有效的,如果您有包含句点的映射键,它实际上是唯一的方法:
<ui:repeat value="#{class.persons}" var="persons">   
<h:outputText value="#{persons['name']}"/>
<h:outputText value="#{persons['family']}"/>
</ui:repeat>

(你看,你很接近,你只是忘记了右括号)

然而,通常的做法是创建一个 Javabean 类而不是 Map如果它实际上代表一个实体。
public class Person {

private String name;
private String family;
// ...

// Add/generate getters/setters and other boilerplate.
}

并将其输入为 List<Person>到 View 。

关于jsf - 如何在 ui :repeat? 中显示 HashMap 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8364855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com