 <p>Look at the root cause:</p> <pre><code>java.lang.RuntimeException: IteratedExpression.getItem: Index out of Bounds at javax.servlet.jsp.jstl.core.IteratedExpression.getItem(IteratedExpression.java:75) at javax.servlet.jsp.jstl.core.IteratedValueExpression.getValue(IteratedValueExpression.java:60) at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:64) at org.apache.el.parser.AstValue.getValue(AstValue.java:112) at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186) at org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:101) at javax.faces.component.UIData.getValue(UIData.java:1081) at org.ajax4jsf.component.UIDataAdaptor.getValue(UIDataAdaptor.java:1624) at org.ajax4jsf.component.SequenceDataAdaptor.getDataModel(SequenceDataAdaptor.java:65) at org.ajax4jsf.component.SequenceDataAdaptor.createDataModel(SequenceDataAdaptor.java:59) at org.richfaces.component.UIDataTable.createDataModel(UIDataTable.java:120) ... </code></pre> <p>This is absolutely not related to filters. The request just happens to being passed through a filter. If the filter would have caused any problem, you would have seen it in the 1st line of the stacktrace.</p> <p>Your concrete problem is most likely caused by not preserving the proper data model for the data table in the subsequent request. The managed bean is apparently in the request scope instead of the view scope. To fix this, you need to put the bean in the view scope and if necessary review your data model preserving/preloading logic. This should take place in (post)constructor and/or (action)listener methods, but for sure not in the getter method. The getter method should <strong>only</strong> return the data model, nothing more.</p> <p>If you are still on JSF 1.x which doesn't have the new JSF 2.x view scope, you need to add an <code>&lt;a4j:keepAlive&gt;</code> to the page which references the request scoped managed bean.</p>