I have a String HTML content which is loaded into webEngine
by loadContent()
method. I have also some css and image files used in this page. Although I put these file into the same package of java class, the loaded page cannot find them. Looked for API docs and web, but could not find any appropiate similar solutions. How I load these files?
相关问题
- Delete Messages from a Topic in Apache Kafka
- Jackson Deserialization not calling deserialize on
- How to maintain order of key-value in DataFrame sa
- StackExchange API - Deserialize Date in JSON Respo
- Difference between Types.INTEGER and Types.NULL in
I just found out that using the
<base>
tag in the HTML also does the trick:If you load the above code via
engine.loadContent(String)
thenimage.png
will be loaded from/absolute/path/to/your/docroot/image.png
.This method is easier if you need to load multiple resources since you only have to specify the absolute path at a single place.
This has been tested with
WebView
of Java 8u25.You can place your string html content in a file in the same package as the Java class and use the
engine.load(String url)
method instead:When you do this, all relative links in the html page will resolve to resources (e.g. css and image files) in your Java package.
Beware that if you are loading a resource that is located in a jar file, that the
jar:
protocol does not understand relative links with parent specifiers. E.g.,<img src="../images/image.png"/>
will not work, but<img src="/images/image.png"/>
or<img src="images/image.png"/>
will as long (as you put the image in the appropriate location in the jar file). Thefile:
protocol does not have such restrictions and..
relative links will work fine when the resources are loaded using it.If the html string is dynamically generated by your java code rather than static, then Sergey's solution is probably best.
You need to set your local paths in html string for
loadContent
next way:Try this