在子表中用正确的数据填充列不起作用(JSF,Primefaces) [英] Filling columns with the right data in subTable doesn't work (JSF, Primefaces)
问题描述
我在下面有以下代码:
<h:panelGrid id="formDatatable">
<p:dataTable var="Resource" value="#{resource.listResourceForDataTable}">
<p:subTable var="access" value="#{resource.listResourceForSubTable}">
<f:facet name="header">
#{Resource.firstname} #{Resource.lastName}
</f:facet>
<p:column>
#{access.skillLevel}
</p:column>
<p:column>
#{access.skillName}
</p:column>
</p:subTable>
</p:dataTable>
</h:panelGrid>
在DataTable的值中:资源列表(带有字符串和Map的复杂对象)
In value of the DataTable: a list of Resource (complex object with Strings and Map)
在子表的值中:仅包含两个字段的资源列表:---> skillLevel(字符串)和skillName(字符串).
In value of the SubTable: a list of Resource with just 2 fields: ---> skillLevel (String) and skillName (String).
结果是(技能等级/技能名称):
The result is (level of the skill/ name of the skill):
如您所见,它用子表列表中的所有元素填充了标题".这不是我想要的,因为"albert first"(资源)学习了Java(Skill),并且在levelOfSkill中有2个.他没有其他技能.
As you can see it fills the "Headers" with all elements in the list of my SubTable. It's not that i want, because "albert first" (Resource) has learnt java (Skill) and has 2 in levelOfSkill. He hasnt the others skills.
我想在桌子上放
阿尔伯特优先:2-Java
albert first: 2 - java
mickael jackson:2-jee; 3-php
mickael jackson: 2 - jee ; 3 - php
汤姆·霍克斯(Tom Hawks):2-PHP; 4-Java
Tom Hawks : 2 - php ; 4 - java
但是我每个标题每次都有所有技能.我如何分离"数据?我以为DataTable和SubTable可以完成这项工作.
But i have all the skills each time in each Header. How can i "separate" the data? I thought DataTable and SubTable would do this job.
推荐答案
找到了. 我必须将地图转换"为列表:
Found. I had to "convert" my map into a List:
public List<Map.Entry<Skill, Niveau>> getSkillNiveauMap() {
Set<Map.Entry<Skill, Niveau>> map = skillLevel.entrySet();
return new ArrayList<Map.Entry<Skill, Niveau>>(map);
}
然后,我会调用我需要的条目:
Afterwards, i call the entries i need:
<p:dataTable id="resources" var="Resource" value="#{resource.listOfAllResources}">
<p:subTable var="skill" value="#{Resource.skillNiveauMap}">
<f:facet name="header">
#{Resource.firstname} #{Resource.lastName}
</f:facet>
<p:column>
#{skill.key.title}
</p:column>
<p:column>
#{skill.value.niveau}
</p:column>
</p:subTable>
</p:dataTable>
这篇关于在子表中用正确的数据填充列不起作用(JSF,Primefaces)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!