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

使用ui:composition、ui:insert和ui:include时需逐层传递ui:param吗

结论

你可以直接在template2.xhtml中访问a1参数,不需要在<ui:include>标签中重复通过<ui:param>传递。

原理说明

Facelets(JSF默认视图技术)中,<ui:param>定义的参数会存入当前Facelet的上下文,作用域覆盖整个当前渲染链下的所有关联页面:

  • 你在main.xhtml的<ui:composition>下声明的a1参数,首先会传递给引用的模板template1.xhtml
  • template1.xhtml中通过<ui:include>引入的template2.xhtml,默认会继承当前Facelet上下文的所有参数,因此可以直接读取a1的值

补充说明

只有在以下场景才需要在<ui:include>下额外声明<ui:param>:

  • 需要覆盖上层传递的同名参数值
  • 需要给被包含页面传递仅作用于该包含场景的专属参数
  • 部分老旧的非标准Facelets实现存在参数继承缺陷时,可手动传递做兼容验证

内容的提问来源于stack exchange,提问作者Mohammad Ashfaq

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:57:02