-
New Feature
-
Resolution: Unresolved
-
Normal
-
None
-
9.6.0
-
Security Level: Jimmy
User Story
As an developer, I want to use .zhtml pages in my zkspringboot application so to leverage existing .zhtml pages also in spring boot jar deployments
Acceptance Criteria
Enable .zhtml from ZumlExtendlet or provide a new ZhtmlExtendlet
as of now zul files can be rendered correctly via
- /zkau/web/some/path/my.zul
the goal is to also allow including .zhtml pages (e.g. using a similar approach)
- /zkau/web/some/path/my.zhtml
(as of now zhtml files are returned as plain text)
Details
Right now it is possible configure the existing ZumlExtendlet also for the zhtml extension. However an IllegalArgumentException is triggered by the zsoup parser:
java.lang.IllegalArgumentException: BaseURI must not be null at org.zkoss.zsoup.helper.Validate.notNull(Validate.java:26) ~[zsoup-1.8.2.5.jar:na] at org.zkoss.zsoup.parser.TreeBuilder.initialiseParse(TreeBuilder.java:25) ~[zsoup-1.8.2.5.jar:na] at org.zkoss.zsoup.parser.TreeBuilder.parse(TreeBuilder.java:40) ~[zsoup-1.8.2.5.jar:na] at org.zkoss.zsoup.parser.HtmlTreeBuilder.parse(HtmlTreeBuilder.java:55) ~[zsoup-1.8.2.5.jar:na] at org.zkoss.zsoup.parser.Parser.parseInput(Parser.java:30) ~[zsoup-1.8.2.5.jar:na] at org.zkoss.zsoup.helper.DataUtil.parseByteData(DataUtil.java:115) ~[zsoup-1.8.2.5.jar:na] at org.zkoss.zsoup.helper.DataUtil.load(DataUtil.java:63) ~[zsoup-1.8.2.5.jar:na] at org.zkoss.zsoup.Zsoup.parse(Zsoup.java:135) ~[zsoup-1.8.2.5.jar:na] at org.zkoss.zhtml.impl.HtmlTreeBuilder.parse(HtmlTreeBuilder.java:328) ~[zhtml-9.6.0-Eval.jar:9.6.0] at org.zkoss.zk.ui.metainfo.Parser.parse(Parser.java:148) ~[zk-9.6.0-Eval.jar:9.6.0] at org.zkoss.zk.ui.metainfo.PageDefinitions.getPageDefinitionDirectly(PageDefinitions.java:96) ~[zk-9.6.0-Eval.jar:9.6.0] at org.zkoss.zk.ui.http.ZumlExtendlet$ZumlLoader.parse(ZumlExtendlet.java:212) ~[zk-9.6.0-Eval.jar:9.6.0] at org.zkoss.zk.ui.http.ZumlExtendlet$ZumlLoader.parse(ZumlExtendlet.java:205) ~[zk-9.6.0-Eval.jar:9.6.0] at org.zkoss.web.util.resource.ExtendletLoader.load(ExtendletLoader.java:124) ~[zweb-9.6.0-Eval.jar:9.6.0] at org.zkoss.web.util.resource.ExtendletLoader.load(ExtendletLoader.java:42) ~[zweb-9.6.0-Eval.jar:9.6.0] at org.zkoss.util.resource.ResourceCache$Info.load(ResourceCache.java:227) ~[zcommon-9.6.0-Eval.jar:9.6.0] at org.zkoss.util.resource.ResourceCache$Info.<init>(ResourceCache.java:202) ~[zcommon-9.6.0-Eval.jar:9.6.0] at org.zkoss.util.resource.ResourceCache.get(ResourceCache.java:134) ~[zcommon-9.6.0-Eval.jar:9.6.0] at org.zkoss.zk.ui.http.ZumlExtendlet.service(ZumlExtendlet.java:104) ~[zk-9.6.0-Eval.jar:9.6.0] at org.zkoss.web.util.resource.ClassWebResource.web0(ClassWebResource.java:615) ~[zweb-9.6.0-Eval.jar:9.6.0] at org.zkoss.web.util.resource.ClassWebResource.web(ClassWebResource.java:602) ~[zweb-9.6.0-Eval.jar:9.6.0] at org.zkoss.web.util.resource.ClassWebResource.service(ClassWebResource.java:282) ~[zweb-9.6.0-Eval.jar:9.6.0] at org.zkoss.zk.au.http.DHtmlResourceServlet.doGet0(DHtmlResourceServlet.java:117) ~[zk-9.6.0-Eval.jar:9.6.0] at org.zkoss.zk.au.http.DHtmlUpdateServlet.doGet(DHtmlUpdateServlet.java:397) ~[zk-9.6.0-Eval.jar:9.6.0]
The method org.zkoss.zhtml.impl.HtmlTreeBuilder#parse(java.io.Reader) always calls the parse method with a NULL baseURI
https://github.com/zkoss/zk/blob/v9.6.0/zhtml/src/org/zkoss/zhtml/impl/HtmlTreeBuilder.java#L328