在子表中用正确的数据填充列不起作用(JSF,Primefaces) [英] Filling columns with the right data in subTable doesn't work (JSF, Primefaces)

查看:85
本文介绍了在子表中用正确的数据填充列不起作用(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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆