SAlenaA
@SAlenaA

Как остановить чтение list-а?

Здравствуйте,
помогите, пожалуйста, не могу понять как остановить считывание из List.
public String NumberOfRecords() {
        String n1 = tableCity.get(n2);
        n2++;     
        return n1;   
    }

tableCity - List, заполняется из БД.
Вы водим мы эти данные в таблицу. Таблица динамическая.
<div id="list" >
            <f:view>
                <h:form>   
                    <p:dataTable var="directory" value="#{dataDB.tableCity}" style="margin-bottom:280px; font-size: 12px">
                     <!--  <p:ajax event="rowEdit" listener="#{dtEditView.onRowEdit}" update=":form:msgs" />
                        <p:ajax event="rowEditCancel" listener="#{dtEditView.onRowCancel}" update=":form:msgs" />
                        -->
                        <c:forEach items="#{dataDB.columns}" var="obj">
                            <p:column headerText="#{dataDB.NumberOfColumn()}" >  
                                     <h:outputText value="#{dataDB.NumberOfRecords()}" />
                            </p:column>
                        </c:forEach>
                    </p:dataTable>
                </h:form>
            </f:view>
        </div>
Мозгами понимаю что нужно какой то ограничитель поставить или foreach, но не могу додумать какой.
Выдает ошибку Index 304, Size:304 (в листе 304 записи, кстати если выводить System.out.print(n1) - то все записи в лог считывает и затем ошибка)
Часть лога:

Severe: Error Rendering View[/directory.xhtml]
javax.el.ELException: /directory.xhtml @63,85 value="#{dataDB.NumberOfRecords()}": java.lang.IndexOutOfBoundsException: Index: 304, Size: 304
.......................
FATAL: JSF1073: javax.el.ELException caught during processing of RENDER_RESPONSE 6 : UIComponent-ClientId=, Message=/directory.xhtml @63,85 value="#{dataDB.NumberOfRecords()}": java.lang.IndexOutOfBoundsException: Index: 304, Size: 304
FATAL: /directory.xhtml @63,85 value="#{dataDB.NumberOfRecords()}": java.lang.IndexOutOfBoundsException: Index: 304, Size: 304
javax.el.ELException: /directory.xhtml @63,85 value="#{dataDB.NumberOfRecords()}": java.lang.IndexOutOfBoundsException: Index: 304, Size: 304
....................
  • Вопрос задан
  • 257 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Px2
В листе 304 записи, но индекс последней записи - 303. Поэтому и получаете ошибку "IndexOutOfBoundsException: Index: 304, Size: 304".
Нужно перед считыванием из листа проверять, не превышает ли индекс размер этой коллекции. Например:

if(n2 < tableCity.size()) {
    String n1 = tableCity.get(n2);
    n2++;     
    return n1; 
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы