当前位置: 首页 > 面试题库 >

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

芮立果
2023-03-14
问题内容

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

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

并标出网址,

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

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


 类似资料:
  • 问题内容: 我试图为类路径协议注册自定义URL处理程序,如另一个线程所述。这是代码: 该测试用例具有以下JVM参数: 该行正确输出,因此正在设置属性。但是,由于上面的调用将引发异常,因此它似乎没有生效。 如果我像注释行中那样显式提供处理程序,则一切都很好。但是,我不想明确提供它-它应该自动完成。 我究竟做错了什么? 问题答案: 我发现了问题。我使用的原始类路径处理程序类具有非默认构造函数。当然,因

  • 我搜索了一个解决方案,但在任何地方都找不到,至少不是当前的解决方案,也不是使用非基于xml的Spring和Spring Security配置的解决方案。 我需要实现一个将在Spring注销处理程序之前使用的处理程序。我已经阅读了很多关于LogoutSuccessHandler的文章,但这是在注销过滤器成功注销后调用的,我需要访问存储在用户会话中的用户数据以执行一些数据库条目,站点注销信息等。一旦S

  • 可以通过实现接口或扩展任何现有的实现来创建自己的自定义处理程序。 在下面的示例中,我们通过扩展类创建了自定义处理程序。 为了理解上述与DBUtils相关的概念,让我们编写一个将运行读取查询的示例。 创建一个示例应用程序。 更新在DBUtils入门程序中创建的文件:MainApp.java。 按照下面的说明编译并运行应用程序。 以下是的内容。 以下是文件的内容。 以下是文件的内容。 完成创建源文件后

  • 我想为我的应用程序使用自定义异常处理程序。但是,它不能正常工作。 ApplicationExceptionHandler.java authFilterRegistration.java ErrorEntity.java 使用这些代码,我希望有一个像这样的异常错误 这是的实例,但我得到了以下输出 从示例中可以清楚地看出,我无法完全覆盖默认的Java异常。仅更改成功的消息部分。我错过什么了吗?

  • 我们可以通过实现ResultSetHandler接口或扩展ResultSetHandler的任何现有实现来创建我们自己的自定义处理程序。 在下面给出的示例中,我们通过扩展BeanHandler类创建了一个自定义处理程序EmployeeHandler。 要理解与DBUtils相关的上述概念,让我们编写一个运行读取查询的示例。 要编写我们的示例,让我们创建一个示例应用程序。 步 描述 1 更新在 DB

  • 我是Spring MVC的新手,我刚刚遇到Spring自定义格式化程序。所以我试图为java.util.date创建一个自定义格式化程序。 MyDateFormatter.java