2013-03-20 2 views
6

In JavaFX posso allegare un ascoltatore al lavoratore carico per una webEngine come questo:Come ottenere JavaFx WebEngine per segnalare errori in dettaglio?

webEngine.getLoadWorker().stateProperty().addListener(
     new ChangeListener<Worker.State>() { 
     public void changed(ObservableValue ov, Worker.State oldState, Worker.State newState) {        
      System.out.println("webEngine result "+ newState.toString()); 
     } 
    }); 

Tuttavia, se provo a caricare un documento ad un indirizzo https come ad esempio:

https://SomeLocalMachine.com:9443/jts/admin#action=com.ibm.team.repository.manageUsers

tutto quello che vengono stampati sulla console è:

webEngine result READY 
webEngine result SCHEDULED 
webEngine result RUNNING 
webEngine result FAILED 

(Lo stesso indirizzo https in Firefox o Chrome mi riceve una pagina di accesso)

Qualcuno sa come ottenere report più dettagliati da JavaFx WebEngine. Non voglio solo sapere che non è riuscito - ho bisogno di sapere why. I posso immaginare il mio errore è certificato SSL// HTTPS è legato, ma al momento sono abbastanza all'oscuro su quale parte di SSL causato a 'FAIL'

risposta

4

Il migliore che abbiamo mai ottenuto era:

if (webEngine.getLoadWorker().getException() != null && newState == State.FAILED) { 
    exceptionMessage = ", " + webEngine.getLoadWorker().getException().toString(); 
} 

ma che non ha aiutato.

(Il nostro errore è stato causato da un CookieStore manca, a quanto pare non si ottiene uno gratis - e devono impostare un default: http://docs.oracle.com/javase/7/docs/api/java/net/CookieHandler.html)

+0

Dove hai inserito quel codice? Nel motore Web caricare il listener di modifica delle proprietà dello stato di lavoro? – jewelsea

+0

Sì in ChangeListener come in "webEngine.getLoadWorker(). StateProperty(). AddListener ( new ChangeListener () ..... –

4

Hai provato la seguente:

engine.getLoadWorker().exceptionProperty().addListener(new ChangeListener<Throwable>() { 
    @Override 
    public void changed(ObservableValue<? extends Throwable> ov, Throwable t, Throwable t1) { 
     System.out.println("Received exception: "+t1.getMessage()); 
    } 
}); 
13

È possibile utilizzare com.sun.javafx.webkit.WebConsoleListener. Il rovescio della medaglia è che è l'API interna di JRE.

WebConsoleListener.setDefaultListener(new WebConsoleListener(){ 
    @Override 
    public void messageAdded(WebView webView, String message, int lineNumber, String sourceId) { 
     System.out.println("Console: [" + sourceId + ":" + lineNumber + "] " + message); 
    } 
});