2011-03-27 14 views
5

Hej chłopaki. Tworzę komponent do biblioteki wykresów javascript o nazwie flot.Jak zrobić unikatowy identyfikator na stronie z komponentami kompozytowymi JSF?

<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> 

To jest niewielka ilość kodu, jaką do tej pory otrzymałem. Mam problem w jaki sposób sprawić, by tag div generował losowo na stronie, tak aby móc wyprowadzać wiele wykresów. Oczywiście nie zrobi tego w obecnym stanie. Musiałbym przekazać wartość do funkcji javascript do.

Wiem, że mogę po prostu utworzyć inny atrybut o wymaganym identyfikatorze, a użytkownik będzie musiał podać identyfikator, ale zauważyłem na wielu składnikach, że identyfikator nie jest wymagany. Wydaje się, że w ciężkich bibliotekach ajaxowych/javascriptowych, takich jak prymitywy i lodowiska, identyfikatory są losowe.

Dzięki za pomoc.

Odpowiedz

6

Możesz uzyskać własny identyfikator komponentu kompozytowego przez #{cc.id}. Tak, aby zapewnić niepowtarzalność, po prostu zrobić:

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

i

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

JSF będzie autogenerować jeden, jeśli nie określono żadnego id atrybut komponentu. Na przykład.

<my:plot id="foo"> 

Tutaj foo zostaną wykorzystane jako #{cc.id} we wdrażaniu komponentu kompozytowego.

+0

Idziemy. Dzięki. Dodałem identyfikator jako atrybut. Nie wiedziałem, że został już zdefiniowany. Chyba nie czytałem na ten temat wystarczająco dużo. –

Powiązane problemy