Я хочу показать определенную веб-страницу в JavaFx WebView, но она остается пустой.
Я добавил documentListener в WebEngine WebView. Это показывает, что документ загружен.
Я копался в журнале на самом лучшем уровне, но я не понимаю, почему страница не отображается.
Вот полный код:
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class FxBrowserOfficeTest extends Application
{
@Override
public void start( Stage stage ) throws Exception
{
StackPane pane = new StackPane();
WebView view = new WebView();
WebEngine engine = view.getEngine();
engine.load( "https://login.microsoftonline.com/47ef05e2-eef7-412f-b794-3b99f6ab08e7/saml2" );
engine.documentProperty().addListener( new ChangeListener<Document>()
{
@Override
public void changed( ObservableValue<? extends Document> observable, Document oldDocument, Document newDocument )
{
Document doc = engine.getDocument();
if ( doc != null )
{
try
{
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty( OutputKeys.INDENT, "yes" );
transformer.setOutputProperty( "{http://xml.apache.org/xslt}indent-amount", "4" );
DOMSource source = new DOMSource( doc );
ByteArrayOutputStream streamOut = new ByteArrayOutputStream();
StreamResult result = new StreamResult( streamOut );
transformer.transform( source, result );
System.out.println( streamOut.toString().trim() );
}
catch ( Exception e )
{
e.printStackTrace();
}
}
}
} );
//ADDED
System.err.println( "UserAgent: " + engine.getUserAgent() );
System.err.println( "JavaScriptEnabled: " + engine.isJavaScriptEnabled() );
engine.getLoadWorker().stateProperty().addListener( new ChangeListener<Worker.State>()
{
@Override
public void changed( ObservableValue ov, Worker.State oldState, Worker.State newState )
{
System.err.println( "LoadWorker newState: " + newState );
}
} );
// END ADDED
pane.getChildren().add( view );
Scene scene = new Scene( pane, 960, 600 );
stage.setScene( scene );
stage.show();
}
public static void main( String[] args ) throws IOException
{
Application.launch( args );
}
}
Я ожидалСтраница входа в Microsoft отображается, но она остается пустой.
Кто-нибудь знает, почему он остается пустым?