2011-03-27 10 views
5

Ehi ragazzi. Sto creando un componente per la libreria di grafici javascript chiamata flot.Come rendere un ID univoco sulla pagina con i componenti compositi 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> 

Questa è la piccola quantità di codice che ho finora. Il problema che ho è come farò in modo che quel tag div venga generato in modo casuale su una pagina in modo che io possa generare più grafici. Ovviamente non lo farà nello stato attuale. Avrei bisogno di passare il valore nella funzione javascript a.

So che posso semplicemente creare un altro attributo con ID richiesto e l'utente dovrebbe specificare l'ID, ma ho notato su molti componenti che l'ID non è richiesto. Sembra nelle librerie ajax/javascript pesanti come primefaces e icefaces che gli id ​​sono casuali in qualche modo.

Grazie per qualsiasi aiuto.

risposta

6

È possibile ottenere l'ID del componente composito da #{cc.id}. Quindi, per garantire l'unicità, basta fare:

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

e

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

JSF sarà autogenerate uno se non si specifica alcun attributo id sul componente. Per esempio.

<my:plot id="foo"> 

Qui foo sarà usato come #{cc.id} nell'attuazione componente composito.

+0

Eccoci. Grazie. Stavo aggiungendo l'id come attributo. Non sapevo che ce n'era già uno definito. Credo di non aver letto abbastanza su di esso. –