2015-12-24 2 views
1

Документация ui:repeat, атрибут value состояния, что он может перебиратьИтерация через массив примитивов с использованием <ui:repeat>

Список, массив, java.sql.ResultSet или отдельный объект Java

Однако Похоже, что int[] понимают иначе как Object, а не array. Это любой способ как итерации массива примитивов в 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[] [[email protected] 
List<Integer> 0 1 2 3 
Integer[] 0 1 2 3 

ответ

2

Это не работает, потому что массив примитивов не может быть приведен к Object[] в соответствии с требованиями, лежащий в основе ArrayDataModel. Массив примитивов представляет собой экземпляр Object вместо Object[]. Невозможно преобразовать массив примитивов в Object[], кроме того, что он перебирает его и создает новый массив. На самом деле это не ответственность структуры представления представлений модели, как JSF. Сам разработчик отвечает за поставку правильной модели на первое место.

Я, однако, согласен с тем, что документация может быть уточнена на этом. Вы можете сделать это, оставив проблему у JSF spec ребят.

Смежные вопросы