Uploaded image for project: 'ZK'
  1. ZK
  2. ZK-5007

Support zhtml files via /zkau (e.g. via ZumlExtendlet)

XMLWordPrintable

    • Icon: New Feature New Feature
    • Resolution: Unresolved
    • Icon: Normal Normal
    • None
    • 9.6.0
    • ZK Update Engine
    • 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

            Unassigned Unassigned
            cor3000 cor3000
            Votes:
            1 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: