jsf - 使用 <ui :repeat> 迭代原语数组

标签 jsf jsf-2.2 primitive-types uirepeat

ui:repeat 的文档,属性 value 表明它可以迭代

List, array, java.sql.ResultSet, or an individual java Object

然而,int[]似乎被理解为Object而不是数组。 有没有办法在 JSF 2.2 中迭代原语数组?或者至少为什么它不可能?

我的代码:

@Named
@RequestScoped
public class UiRepeatBean {

    public int[] getArray() {
        return IntStream.range(0, 4)
                .toArray();
    }

    public List<Integer> getList() {
        return IntStream.of(getArray())
                .mapToObj(i -> i)
                .collect(Collectors.toList());
    }

    public Integer[] getArrayOfIntegers() {
        return IntStream.of(getArray())
                .mapToObj(i -> i)
                .toArray(Integer[]::new);
    }
}
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets">
    <head>
        <title>Start Page</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    </head>
    <h:body>
        <p>
            int[]
            <ui:repeat value="#{uiRepeatBean.array}" var="i">
                #{i}
            </ui:repeat>
        </p>
        <p>
            List&lt;Integer>
            <ui:repeat value="#{uiRepeatBean.list}" var="i">
                #{i}
            </ui:repeat>
        </p>
        <p>
            Integer[]
            <ui:repeat value="#{uiRepeatBean.arrayOfIntegers}" var="i">
                #{i}
            </ui:repeat>
        </p>
    </h:body>
</html>

渲染结果:

int[] [I@70fcfc34
List<Integer> 0 1 2 3
Integer[] 0 1 2 3 

最佳答案

它不起作用,因为基元数组无法按照底层要求转换为 Object[] ArrayDataModel 。基元数组是 Object 的实例,而不是 Object[] 的实例。除了循环并创建一个新数组之外,没有其他方法可以将基元数组转换为 Object[]。这实际上并不是像 JSF 这样的模型 View 呈现器框架的责任。开发人员本身首先负责提供正确的模型。

不过,我确实同意文档可以对此进行更明确的说明。您可以通过在 JSF spec 留下问题来做到这一点伙计们。

关于jsf - 使用 <ui :repeat> 迭代原语数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34449826/

相关文章:

css - 选择在 Internet Explorer 中换行的元素文本

JSF 复合组件接口(interface)标记 "expert"属性。它是做什么用的?

url - JSF 导航生成错误的 URL

javascript - primefaces日历关闭overlayPanel

html5 标签上的 JSF 条件属性

authentication - Picketlink 没有选择我的用户定义的验证器

java - 如何在 apache shiro 中为不同的角色使用不同的未经授权的 url

c++ - C 和 C++ 中整数/算术类型的大小保证

java - 为什么负字节的 Java 无符号位移如此奇怪?

java - 在 Java 中传递和编辑原始对象