2011-03-27 32 views
5

嘿傢伙。我正在爲稱爲flot的javascript圖表庫創建一個組件。如何使用JSF複合組件在頁面上創建唯一的id?

<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不是必需的。它看起來像沉重的ajax/javascript庫,如primefaces和icefaces,這些id是隨機的。

感謝您的任何幫助。

回答

6

您可以通過#{cc.id}獲取複合組件的自己的ID。因此,爲了保證唯一性,只是做:

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

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

JSF會自動生成一個,如果你不指定組件上的任何id屬性。例如。

<my:plot id="foo"> 

foo這裏將在複合部件執行被用作#{cc.id}

+0

我們走了。謝謝。我將該ID添加爲屬性。不知道已經有一個定義。猜猜我沒有讀足夠。 – 2011-03-27 13:12:55

相關問題