2015-08-07 12 views
8

Sono riuscito a ottenere l'evento click del pulsante fino a quel momento funzionante seguendo la documentazione. Ciò di cui sto lottando ora è l'attivazione a livello di codice dell'evento click del componente ADF.Trigger/Simulate Fare clic su evento a livello di programmazione tramite ClientListerner

Il codice sorgente è il seguente:

<af:showDetailItem id="pane1" text="Panel Label 1" disclosed="true"> 
    <af:commandButton text="commandButton 1" id="cb1"> 
     <af:clientListener method="showNext" type="action" /> 
    </af:commandButton> 
</af:showDetailItem> 

<af:showDetailItem id="pane2" text="Panel Label 2"> 
    <af:commandButton text="commandButton 2" id="cb2"> 
     <af:clientListener method="showNext" type="action" /> 
    </af:commandButton> 
</af:showDetailItem> 

<af:showDetailItem id="pane3" text="Panel Label 3"> 
    <af:commandButton text="commandButton 3" id="cb3"> 
     <af:clientListener method="showNext" type="action" /> 
    </af:commandButton> 
</af:showDetailItem> 

Javascript

function showNext(evt){   
    var src = evt.getSource(); 
    var showDetailItemNode = src.getParent(); // targets the showDetailItem tag  
    /* how do I trigger the click event of this node */ 
} 

Quindi, in pratica quello che sto cercando di realizzare è che quando il pulsante # CB1 viene cliccato, voglio simulare il click evento di showDetailItem # pane1 e così via ...

+0

Come scrivere JavaScript dipende l'albero DOM HTML (probabilmente già sapete, JS corre nel browser web, non in server web). Pochissime persone usano l'ADF di Oracle e ancora pochissimi si provano da soli o raccontano da capo come l'output HTML generato dell'XHTML sovrastampato assomiglia. Altre persone non sono interessate a installare Oracle ADF solo per capire l'effettivo output HTML generato. In altre parole, hai una maggiore possibilità in una risposta se includi l'output HTML generato, o completamente reframe la domanda per includere HTML in un vero sapore MCVE e retarget agli utenti di '[html]'. – BalusC

+0

@BalusC Giusto abbastanza. Ma suppongo che l'uso di javascript nell'HT generato non sia la migliore pratica da seguire (anche se farebbe il lavoro) poiché ADF ha il suo modo raccomandato di gestire le interazioni lato client. Usare javascript sull'HTML generato è un'opzione ed è qualcosa che posso fare da solo, ma non voglio seguire l'approccio dato nella documentazione dell'ADF; cioè, tramite l'uso del tag 'clientListener'. – asprin

+1

Non sono sicuro se questa è la risposta in quanto non so nulla di ADF e tanto meno il suo output HTML generato, ma questo può essere un suggerimento utile nella giusta direzione: se l'elemento DOM HTML in questione ha un attributo 'onclick', allora potresti attivarlo tramite solo 'element.onclick()'. Oppure, se vuoi simulare un clic del mouse sull'elemento HTML DOM, quindi fai semplicemente 'element.click()', che genererà il suo 'onclick', se ce n'è uno, e poi esploderà nell'albero DOM a seconda del suo ritorno valore. – BalusC

risposta

2

È possibile passare in rassegna i figli del componente fisarmonica per scoprire quale showDetailItem viene rivelato al momento. Quindi imposta quello a disclosed = false e imposta true per il successivo.

+0

Ma in che modo li percorri? – Kukeltje

+0

I second @Kukeltje Potresti mostrarci come? – asprin

+0

In un bean gestito è possibile ottenere un riferimento al componente fisarmonica e utilizzare il metodo getChildren() per quel componente per scoprire quali componenti sono al suo interno. –

3
<af:serverListner> 

è un tag che è possibile utilizzare in tandem con <af:clientListner> per propagare il vostro evento al bean gestito .Più sopra, è anche possibile associare tag con sopra <af:showDetailItem> citato pure. Spero che sia d'aiuto .

+0

Mi dispiace. Non aiuta moltoInoltre, non voglio avere un serverListener quando questo può essere raggiunto interamente sul lato client stesso – asprin

+0

@asprin: Si prega di sollevare una domanda in Oracle Community (https://community.oracle.com/community/java/java_development_tools/application_development_in_java/jdeveloper_and_adf) anche per una migliore visibilità, se non fatto. – Sid

+0

Ciao Sid. Ho già fatto un post lì. È stato il primo posto che ho chiesto a https://community.oracle.com/thread/3779096 – asprin

3

Se si desidera manipolare completamente la fisarmonica tramite JavaScript sul client, è necessario utilizzare l'API JavaScript per i volti di ADF. In particolare questi due: http://docs.oracle.com/cd/E23943_01/apirefs.1111/e12046/oracle/adf/view/js/component/rich/layout/AdfRichShowDetailItem.html e

http://docs.oracle.com/cd/E23943_01/apirefs.1111/e12046/oracle/adf/view/js/component/rich/layout/AdfRichPanelAccordion.html

+0

Qualsiasi codice di esempio potrebbe essere utile in questo caso – asprin