如何通过其接口定义composite内部repeater的内容?

2024-04-01

我有一个复合组件ui:repeat并想要定义的内容ui:repeat通过复合材料的界面。

以下代码在 MyFaces 中工作,但看起来更像是一个 hack,因为变量名称varRepeat必须在复合之外已知,并且仅在没有提供应在其他地方渲染的其他子项时才有效。

View

定义内容ui:repeat

<comp:myRepeater value="#{of:createIntegerArray(1,5)}">
    <h:outputText id="varComp" value="#{varRepeat}"/>
</comp:myRepeater>

复合 myRepeater

<composite:attribute name="value" type="java.lang.Object"/>
<composite:implementation>
    <ui:repeat var="varRepeat" value="#{cc.attrs.value}">
        <composite:insertChildren/>
    </ui:repeat>
</composite:implementation>

这是你能得到的最好的var属性不支持 EL。为了让最终用户清楚,请记录以下名称:var in <cc:interface shortDescription> and/or <cc:attribute shortDescription>.

<cc:interface>
    <cc:attribute name="value" type="java.util.Collection" 
        shortDescription="A collection of items. Each item is exposed in EL under the variable name 'item'." />
<cc:interface>
<cc:implementation>
    <ui:repeat value="#{cc.attrs.value}" var="item">
        <cc:insertChildren />
    </ui:repeat>
</cc:implementation>

Usage:

<my:repeat value="#{bean.list}">
    <h:outputText value="#{item}" />
</my:repeat>

The OmniFaces 展示应用程序 http://showcase.omnifaces.orglong 也有类似的组合:<os:listDocs> https://github.com/omnifaces/showcase/blob/master/src/main/webapp/resources/showcase/listdocs.xhtml:

<cc:implementation>
    <c:set var="docs" value="#{page.current.documentation[cc.attrs.paths]}" />
    <ui:fragment rendered="#{not empty docs}">
        <h3>#{cc.attrs.header}</h3>
        <ul>
            <ui:repeat value="#{docs}" var="path">
                <li><a href="#{cc.attrs.url}"><code>#{cc.attrs.label}</code></a></li>
            </ui:repeat>
        </ul>
    </ui:fragment>
</cc:implementation>

Usage https://github.com/omnifaces/showcase/blob/master/src/main/webapp/WEB-INF/templates/showcase.xhtml:

<os:listdocs header="VDL" paths="vdl" url="#{_vdlURL}#{path}.html" label="#{fn:replace(path,'/', ':')}" />
<os:listdocs header="API" paths="api" url="#{_apiURL}#{path}.html" label="#{fn:replace(path,'/', '.')}" /> 
<os:listdocs header="Source code" paths="api" url="#{_srcURL}#{path}.java" label="#{fn:replace(path,'/', '.')}" />

作为设计提示,如果您为集合使用合理的属性名称,则var可能会变得更加自我记录。例如。要求items作为价值并提供var="item".

<my:repeat items="#{[1,2,3,4,5]}">
    <h:outputText value="#{item}"/>
</my:repeat>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过其接口定义composite内部repeater的内容? 的相关文章

随机推荐

  • 如何在 CmdletBinding() 脚本中定义函数?

    我正在编写一个脚本 我想使用 PowerShell 的 CmdletBinding 有没有办法在脚本中定义函数 当我尝试时 PowerShell 抱怨 表达式或语句中出现意外的 token 函数 这是我正在尝试做的事情的一个简化示例 Cmd
  • 如何让 GDB 打印 64 位变量?

    我正在使用 GDB 来调试用以下代码组装的代码 nasm felf64 Fdwarf 当我想检查标签符号的值时 比如说 var h dq 1 using print var h GDB 假设该值是 32 位并且只给我最低的 4 个字节 x
  • 32 位操作系统上的 JVM 堆大小

    我使用的是 32 位 win 7 并使用 Eclipse 还有 4GB 内存 我想为我的 java 应用程序分配大约 3 GB 的最大堆大小 但我可以通过 VM 参数分配最大 1 5GB Xmx1056m 我应该怎么办 如果我安装64位wi
  • ng --version 显示 Angular 不支持当前版本的 Node (16.8.0)

    我刚刚安装了最新版本节点 16 8 using nvm and 角度 cli 12 2 但当我跑步时ng version 它显示以下内容 警告 Angular 不支持当前版本的 Node 16 8 0 我尝试降级节点并安装节点 14 15
  • 提交带有请求的表单未通过

    我真的尝试过自己解决这个问题 但我是 pyhon 的新手 所以我无法做到这一点 我一直在尝试为我使用的网站制作一个机器人 并且我正在尝试使用请求库来做到这一点 到目前为止 我的目标非常简单 登录并回复主题 我已经能够通过网络表单登录 但在通
  • 如何使用 Terraform 创建不具有代入角色策略的 AWS IAM 角色?

    使用 AWS MediaConvert 时 说明提供了示例 IAM 政策 https docs aws amazon com mediaconvert latest ug example inline policy kms decrypt
  • 如何最大化 UWP 窗口(非全屏)

    如何使用 C 最大化 UWP 项目中的窗口 不是全屏 我尝试使用窗口边界作为参数的 TryResizeView 方法 但没有任何反应 Thanks 目前在 UWP 中这是不可能的 所以 我无法让你最大化 但我可以让你非常接近 var av
  • Ansible、瞻博网络 CLI 命令。超时错误?

    我正在尝试将我用 Python 编写的自动化脚本传输到 ansible 公司请求 但我以前从未使用过 ansible 我已经尝试过 wait for 但我也没有让它发挥作用 在脚本中 我可以设置 dev timeout None 或我需要的
  • Bower/bower-asset 在 yii2 等 php 应用程序中扮演什么角色

    最近我部署了一些项目 例如trntv yii2 starter kit https github com trntv yii2 starter kit 等等 但所有应用程序都在 vendor bower 而不是 vendor bower b
  • 使用 XSLT 在字符串/子字符串中的每个实例之后进行选择

    我正在尝试编写一个 XSLT 样式表 该样式表将处理 Dublin Core XML 编目记录并为每本书创建芝加哥 APA 和 MLA 版本的引文 除了 APA 作者的问题之外 我一切都进展顺利 APA 的作者风格需要作者的姓氏 完成 逗号
  • 最佳实践:显示通过多行文本框输入的文本

    我有一个多行文本框 当用户简单地键入时 文本框会包裹文本 并将其保存为单行 用户也可能输入换行符 例如在输入 项目符号 列表时 例如 Here are some suggestions fix this remove that and an
  • 将数据传递到 Rails 部分

    编辑 解决方案完美运行 dom id http api rubyonrails org classes ActionController RecordIdentifier html 我正在尝试将数据传递给部分数据并使用它来更改用户的角色 目
  • 如何使用支持库修复缩放的 FloatingActionButton 上的阴影 23

    我在使用支持库 23 的 KitKat 设备上有一个 FAB 我正在缩放按钮以获得过渡效果 通过将其包含在调整大小的视图中 这基本上与阴影不同 阴影以一种奇怪的形式出现 参见屏幕截图中缩放的红色按钮 蓝色按钮是全尺寸 实际发生的情况是 阴影
  • C# 验证 CRL 列表中的证书

    如何以编程方式检查某个证书是否已从其 CA CRL 列表中撤销 我正在这样做 X509Chain ch new X509Chain ch ChainPolicy RevocationMode X509RevocationMode Onlin
  • SoapFaultMappingExceptionResolver 永远不会遇到常规 java 异常

    谁能告诉我为什么我无法使用解析器捕获常规 Java 异常 以便我可以在响应发回之前对其进行转换 它永远不会遇到断点 如果不可能 我该怎么办 SoapFaultMappingExceptionResolver public class Lis
  • Conda 环境中出现意外的 Python 路径

    在 Conda 环境中 base在这里 我对 Python 路径中的目录顺序感到惊讶 python c import sys print sys path export projects III data wcmp bioinformati
  • 如何在 Java 中刷新 GUI?

    我有一个与 Java 相关的一般性问题 我正在编写一个具有 GUI 菜单的应用程序 我正在尝试根据单选按钮的选择来更改 GUI 菜单的一部分 我需要 重绘整个窗口或仅更新该部分 setVisible true 如果我只使用上面 1 中的语句
  • git 从“工作树”中查找提交

    假设有人克隆了一个 git 存储库并删除了 git 文件夹 有没有办法恢复他们所在的提交 这不是重复的恢复 git 文件夹的最佳方法 https stackoverflow com q 24775326 1248889 or 删除的 git
  • Kubernetes 相当于 `docker run --init`

    建议的最佳实践是不要将 dockerized Node JS 应用程序作为 PID 1 运行 请参阅https github com nodejs docker node blob master docs BestPractices md
  • 如何通过其接口定义composite内部repeater的内容?

    我有一个复合组件ui repeat并想要定义的内容ui repeat通过复合材料的界面 以下代码在 MyFaces 中工作 但看起来更像是一个 hack 因为变量名称varRepeat必须在复合之外已知 并且仅在没有提供应在其他地方渲染的其