gpt4 book ai didi

javafx 2 webview 自定义 url 处理程序,不工作相对 url

转载 作者:行者123 更新时间:2023-11-29 07:51:36 24 4
gpt4 key购买 nike

我有一个带代码的简单应用:

webView.getEngine().load("classpath:data/index.html");

自定义 URLStreamHandler:

public class Handler extends URLStreamHandler {
private final ClassLoader classLoader;

public Handler() {
this.classLoader = getClass().getClassLoader();
}

public Handler(ClassLoader classLoader) {
this.classLoader = classLoader;
}

@Override
protected URLConnection openConnection(URL u) throws IOException {
URL resourceUrl = classLoader.getResource(u.getPath());
if(resourceUrl == null)
throw new IOException("Resource not found: " + u);

return resourceUrl.openConnection();
}
}

安装者:

URL.setURLStreamHandlerFactory(protocol -> {
if(protocol.equals("classpath")) {
return new Handler();
} else {
return null;
}
});

它加载 data/index.html:

<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<div>Hello, World!!!</div>
<img src="download.jpg">
</body>
</html>

但结果图像没有出现。

如何让 WebView 解析像“download.jpg”这样的相对链接?

最佳答案

我想我找到了解决方案:

Handler.openConnection(URL u) 中我们必须添加

String path = getURL().getPath().startsWith("/") ? getURL().getPath().substring(1) : getURL().getPath();
URL resourceUrl = classLoader.getResource(path);

代替

URL resourceUrl = classLoader.getResource(u.getPath());

并使 URL 标准化

webView.getEngine().load("classpath:data/index.html");

使用

webView.getEngine().load("classpath:///data/index.html");

关于javafx 2 webview 自定义 url 处理程序,不工作相对 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20709777/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com