6

我正在为名为 flot 的 Javascript 图表库制作一个组件。

<cc:interface>        
    <cc:attribute name="data" required="true" /> 
</cc:interface>

<cc:implementation>
    <div id="placeholder" style="width:600px;height:300px;"></div>
    <script type="text/javascript"> 
        //<![CDATA[
    $(function () {       
        
      var d1 = [#{cc.attrs.data}];     

        $.plot($("#placeholder"), [ d1 ]);

    });
    //]]>
    </script>
</cc:implementation>

这是我到目前为止的少量代码。我遇到的问题是如何使该 div 标签在页面上随机生成,以便我可以输出多个图表。显然它不会在当前状态下这样做。我需要将值传递给 javascript 函数。

我知道我可以创建另一个需要 id 的属性,并且用户必须指定 id,但我注意到很多组件不需要 id。在诸如 primefaces 和 icefaces 之类的重型 ajax/javascript 库中,id 似乎是随机的。

4

1 回答 1

7

您可以通过 获取复合组件自己的 ID #{cc.id}。因此,为了确保唯一性,只需执行以下操作:

<div id="#{cc.id}_placeholder" style="width:600px;height:300px;"></div>

$.plot($("##{cc.id}_placeholder"), [ d1 ]);

如果您没有id在组件上指定任何属性,JSF 将自动生成一个。例如

<my:plot id="foo">

这里foo将用作#{cc.id}复合组件的实现。

于 2011-03-27T03:54:04.840 回答