【问题标题】:How to pass ArrayList/lists/iterables argument to a JSF1.2 custom components如何将 ArrayList/lists/iterables 参数传递给 JSF1.2 自定义组件
【发布时间】:2011-04-18 15:24:55
【问题描述】:

我正在尝试显示来自我的支持 bean 的图像列表 它有一个功能

public getImgList(){
    return ArrayList<string>imgPathList;
}

现在这个 List 必须被渲染为等价的输出 并排显示的图像。 喜欢

[image][image][image]

如果我使用&lt;h:datatable&gt;,这是不可能的,因为它将每行渲染一个, 而且我找不到任何可以渲染它们的方法 使用自定义组件,因为我必须将图像 list 传递给 自定义组件。 谁能解释一下如何将列表传递给 JSF 1.2 Mojarra 中的自定义组件?

【问题讨论】:

    标签: java jsf custom-component


    【解决方案1】:

    只需将其指定为属性。

    <my:component value="#{bean.imagePaths}" />
    

    UIComponent#getValueExpression() 的帮助下,它将在您的自定义组件类的value 属性中以完全相同的类型提供。


    鉴于您已经在问这个微不足道的问题,我认为开发自定义组件将花费您很多时间。此外,由于已经存在很多解决方案,因此您基本上是在重新发明轮子。我建议采取不同的路线,即只使用现有的标签/组件。有两种选择:

    • 使用 JSTL &lt;c:forEach&gt;。如果你不把它放在另一个迭代组件中,比如&lt;h:dataTable&gt;,并且你没有在循环中渲染输入元素,这将起作用。

      <c:forEach items="#{bean.imagePaths}" var="imagePath">
          <img src="#{imagePath}" />
      </c:forEach>
      
    • 使用第 3 方组件库,该库提供了一个不呈现任何 HTML 的完整 JSF 迭代组件。我建议Tomahawk's &lt;t:dataList&gt;

      <t:dataList value="#{bean.imagePaths}" var="imagePath">
          <img src="#{imagePath}" />
      </t:dataList>
      

    【讨论】:

    • 感谢您的回复,我将不得不编写一个自定义组件,因为图像已在 内,因此无法使用 JSTL 并且我无法使用第三方库(企业指南)因此我将不得不采用自定义组件方式。顺便说一句,当我从UIComponentBase 而不是UIComponent 扩展组件时,我们将不得不使用UIComponentBase#getAttributes
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-18
    • 2018-09-16
    • 1970-01-01
    • 2015-01-21
    • 1970-01-01
    • 2012-12-06
    相关资源
    最近更新 更多