You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Zkoss开发zhtml文件使用template模板不生效如何解决

ZK zhtml文件中template模板不生效解决方案

根因分析

zhtml解析逻辑中,原生HTML5的<template>标签优先级高于ZK同名Shadow组件,你代码中书写的<template>会被识别为普通HTML模板标签,ZK无法读取其内容作为children绑定的渲染模板。找不到匹配模板时,ZK会默认将集合中的字符串元素渲染为z-label组件,也就是你看到的<span>标签。

修复步骤

1. 声明ZK命名空间前缀

修改zhtml的根标签,显式为ZK zul命名空间声明前缀,避免和原生HTML标签冲突:

<x:html xmlns="http://www.zkoss.org/2005/zul"
        xmlns:z="http://www.zkoss.org/2005/zul"
        xmlns:x="xhtml"
        src="/components/public-page-template.html">

2. 为template标签添加命名空间前缀

将原有的<template>标签改为带z:前缀的形式,明确指定为ZK模板组件:

<div viewModel="@id('vm') @init('TestViewModel')">
  <!-- 这里也可以把@init改为@load,兼容后续集合动态更新的场景 -->
  <div children="@load(vm.testList)">
    <z:template name="children">
      <checkbox label="@load(each)"/>
    </z:template>
  </div>
</div>

修改完成后重新测试,即可正常渲染3个checkbox组件。


内容的提问来源于stack exchange,提问作者Арсен Мирзаян

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 09:39:03