ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-10-02 11:03:03  阅读:204  来源: 互联网

标签:java javafx-8 webview


我有简单的应用程序代码:

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");

标签:java,javafx-8,webview
来源: https://codeday.me/bug/20191002/1842833.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有