2013-10-21 12 views
8

Nella mia applicazione web JSF 2, Io uso il seguente codice per visualizzare e cambiare il contenuto di una ricca: dataTable secondo la selectedStatus:JSF eseguire JavaScript dopo f: ajax

<h:selectOneRadio id="statusSelection" value="#{backingBean.selectedStatus}" style="width:auto; float:left;"> 
    <f:selectItem itemValue="AVAILABLE" itemLabel="Available" /> 
    <f:selectItem itemValue="INACTIVE" itemLabel="Inactive" /> 
    <f:ajax render="itemsDataTable" execute="#{backingBean.sortByTitel('ascending')}" /> 
    <f:ajax render="itemsDataTable" event="click" /> 
</h:selectOneRadio> 

DataTable contiene a4j: commandLink s, che devono involontariamente essere doppio clic in alcune versioni di IE dopo aver cambiato il contenuto delle tabelle - ho scoperto, che eseguendo il seguente codice Javascript (sulla console di debugging di IE, dopo il contenuto della tabella sono cambiati) risolve il problema:

document.getElementById(<dataTableClientId>).focus() 

La mia domanda è: come posso raggiungere esecuzione automatica del codice javascript dopo che il contenuto della tabella è cambiato?

+0

Puoi fare un test? Prendi ** ** –

+0

Ho provato, risultato: se tolgo questo tag, va tutto bene in firefox, ma nelle versioni di IE che causano problemi, peggiora ancora: cambiare il contenuto della tabella non funziona, le tabelle cambiano facendo clic sul pulsante di opzione sbagliato, ... –

+1

Mentre stai usando ah: selectOneRadio prova a cambiare l'evento in onchange invece di fare clic. L'evento click accade prima di scegliere l'opzione nella selezione. –

risposta

21

Per chiamare un codice js dopo la f:ajax la seguente soluzione in linea farà

<f:ajax render="itemsDataTable" 
    onevent="function(data) { if (data.status === 'success') { 
    document.getElementById('dataTableClientId').focus() } }"/> 

anche un'occhiata a questa risposta: JSF and Jquery AJAX - How can I make them work together?

Inoltre, doppio controllo la necessità della event="click" in il tuo f:ajax, perché l'evento predefinito in h:selectOneRadio è change che penso tu usi meglio ...

Problemi correlati