JSF中如何多次生成一个组件?

How to generate a component multiple times in JSF?

我需要突出一个国家的边界​​,为此我使用 GMaps4JSF 旨在将 Google 地图与 JSF 集成。

为了绘制多边形和多段线,库提供了polygonComponent polylineComponent 个组件。

我已经将融合表中的数据点加载到我们自己的数据库中。

   <m:map width="1000px" height="500px">   

    <m:polygon lineWidth="4">

        <m:point latitude="35.555618" longitude="61.27652" />
        <m:point latitude="35.517635" longitude="61.183601" />
        <m:point latitude="35.348602" longitude="61.105827" />
        <m:point latitude="35.281799" longitude="61.096241" />
        <m:point latitude="35.23624" longitude="61.099781" />
        <m:point latitude="35.17659" longitude="61.116379" />
        <m:point latitude="35.163876" longitude="61.136036" />
        <m:point latitude="35.132072" longitude="61.13166" />
        <m:point latitude="35.085823" longitude="61.115547" />
        <m:point latitude="35.016937" longitude="61.077492" />
        <m:point latitude="34.879433" longitude="61.051102" />
        <m:point latitude="34.789436" longitude="60.976654" />
        <m:point latitude="34.650757" longitude="60.853191" />
        <m:point latitude="34.567631" longitude="60.832909" />
        <m:point latitude="34.561794" longitude="60.77916" />
        <m:point latitude="34.556099" longitude="60.73999" />
        <m:point latitude="34.544716" longitude="60.723877" />


        ....... and so on to a very very large extent
    </m:polygon>
  </m:map>

呈现为

在地图组件中手动输入多边形的纬度和经度属性是愚蠢的。

我怎样才能做到这一点,所以我只需要写这么多...

<m:map width="1000px" height="500px">
    <m:polygon lineWidth="4">
       <m:point latitude=" " longitude=" " />
    </m:polygon>
</m:map>

就像我们有一个动态数据表,其中的行是动态生成的(多行)。这些<m:point latitude=" " longitude=" " />怎么会生成多次?

您可以使用 <c:forEach>

<m:polygon lineWidth="4">
    <c:forEach items="#{bean.points}" var="point">
        <m:point latitude="#{point.latitude}" longitude="#{point.longitude}" />
    </c:forEach>
</m:polygon>

<ui:repeat> 不适合,因为它不构建组件树。一种理论上的替代方法是使用来自 GMaps4JSF 的虚构 <m:points> 组件,如果它有的话。

另请参阅:

  • JSTL in JSF2 Facelets... makes sense?