【问题标题】:JSF composite component childrensJSF 复合组件子组件
【发布时间】:2011-06-27 08:23:00
【问题描述】:

有什么方法可以使用 EL 来检索子列表,以便我可以遍历它

<ul>
   <ui:repeat value="#{Magic El expression}" var="children" >
      <li>
      <p> #{children.title} *</p>
      </li>
   </ui:repeat>
</ul>
<div>
 <cc:insertChildren />
</div>

* perhaps #{children.attrs.title} I don't know?

我在这里要做的是创建一个 Tab 复合组件。我知道诸如 primefaces 之类的库提供 tabview 等。但由于扩展了 jquery 功能,我需要创建自己的库。另外,我正在使用特定的模板。 我需要获取标签标题来创建标签列表。标签是子组件,无论如何我可以迭代并获取它们的属性吗?我的意思是 primefaces 以某种方式做到了这一点。

如果您查看他们的 html 标记,他们会创建一个无序列表,其中包含每个子标签视图组件的标题。它是如何实现的?

【问题讨论】:

  • 可能是我没有正确理解这个问题。你不能只使用嵌套的 ui:repeat 吗?
  • 我可以,但我的问题是关于如何获取复合组件的子组件。获得子组件列表后,我可以遍历它们,但如何获得该列表?

标签: java jsf jsf-2 composite-component


【解决方案1】:

如果您显示的标记位于复合组件内(我猜是),那么下面的表达式将使您能够访问其子组件:

#{component.getCompositeComponentParent(component).children}

稍微相关的问题:In JSF2, how to know if composite component has children?

【讨论】:

  • 我知道children有title属性,怎么访问呢? child.title 不起作用
【解决方案2】:

如果你的复合组件是一个实例:javax.faces.component.UINamingContainer 试试这个:

    <c:forEach items="#{cc.children}" varStatus="loop" var="child">
      loop[#{loop.index}]: #{child.getAttributes().get('title')}
    </c:forEach>

您可以通过将它们打印到 #{cc}#{component} 等页面来轻松调试哪个实例是您的 JSF 变量

干杯!

【讨论】:

    猜你喜欢
    • 2013-03-23
    • 2013-04-22
    • 2011-06-04
    • 1970-01-01
    • 2011-10-21
    • 2012-04-01
    • 2013-11-10
    • 2011-05-19
    • 2012-04-08
    相关资源
    最近更新 更多