I have a data table in my xhtml file. The data table is using live scroll with lazy loading. The data table also have some editable fields (cell editing). after doing some scrolling and loading more rows, when I edit the cell having selectOneMenu, it throws following exception:
8:42:12,775 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/nextwrapper].[Faces Servlet]] (http--0.0.0.0-8080-4) Servlet.service() for servlet Faces Servlet threw exception: java.lang.NullPointerException
at com.sun.faces.context.PartialViewContextImpl.createPartialResponseWriter(PartialViewContextImpl.java:441) [jsf-impl-2.1.7-jbossorg-2.jar:]
at com.sun.faces.context.PartialViewContextImpl.access$300(PartialViewContextImpl.java:71) [jsf-impl-2.1.7-jbossorg-2.jar:]
at com.sun.faces.context.PartialViewContextImpl$DelayedInitPartialResponseWriter.getWrapped(PartialViewContextImpl.java:582) [jsf-impl-2.1.7-jbossorg-2.jar:]
at javax.faces.context.PartialResponseWriter.startDocument(PartialResponseWriter.java:115) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
at org.primefaces.context.PrimePartialResponseWriter.startDocument(PrimePartialResponseWriter.java:160) [primefaces-5.3.jar:5.3]
at com.sun.faces.context.AjaxExceptionHandlerImpl.handlePartialResponseError(AjaxExceptionHandlerImpl.java:199) [jsf-impl-2.1.7-jbossorg-2.jar:]
at com.sun.faces.context.AjaxExceptionHandlerImpl.handle(AjaxExceptionHandlerImpl.java:123) [jsf-impl-2.1.7-jbossorg-2.jar:]
at com.nextcontrol.utility.CustomExceptionHandler.handle(CustomExceptionHandler.java:40) [classes:]
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:119) [jsf-impl-2.1.7-jbossorg-2.jar:]
at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:116) [jsf-impl-2.1.7-jbossorg-2.jar:]
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) [jsf-impl-2.1.7-jbossorg-2.jar:]
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:100) [primefaces-5.3.jar:5.3]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]
at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_79]
the actual exception is as follows (using Exception handling in JSF ajax requests)
18:42:12,741 ERROR [stderr] (http--0.0.0.0-8080-4) java.lang.IllegalArgumentException: null source
18:42:12,741 ERROR [stderr] (http--0.0.0.0-8080-4) at java.util.EventObject.<init>(EventObject.java:56)
18:42:12,742 ERROR [stderr] (http--0.0.0.0-8080-4) at javax.faces.event.SystemEvent.<init>(SystemEvent.java:71)
18:42:12,746 ERROR [stderr] (http--0.0.0.0-8080-4) at javax.faces.event.ComponentSystemEvent.<init>(ComponentSystemEvent.java:73)
18:42:12,748 ERROR [stderr] (http--0.0.0.0-8080-4) at javax.faces.event.PostRestoreStateEvent.<init>(PostRestoreStateEvent.java:73)
18:42:12,749 ERROR [stderr] (http--0.0.0.0-8080-4) at com.sun.faces.lifecycle.RestoreViewPhase.deliverPostRestoreStateEvent(RestoreViewPhase.java:271)
18:42:12,750 ERROR [stderr] (http--0.0.0.0-8080-4) at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:257)
18:42:12,752 ERROR [stderr] (http--0.0.0.0-8080-4) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
18:42:12,755 ERROR [stderr] (http--0.0.0.0-8080-4) at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:116)
18:42:12,756 ERROR [stderr] (http--0.0.0.0-8080-4) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
18:42:12,756 ERROR [stderr] (http--0.0.0.0-8080-4) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
18:42:12,757 ERROR [stderr] (http--0.0.0.0-8080-4) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329)
18:42:12,758 ERROR [stderr] (http--0.0.0.0-8080-4) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
18:42:12,759 ERROR [stderr] (http--0.0.0.0-8080-4) at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:100)
18:42:12,760 ERROR [stderr] (http--0.0.0.0-8080-4) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280)
18:42:12,763 ERROR [stderr] (http--0.0.0.0-8080-4) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
18:42:12,765 ERROR [stderr] (http--0.0.0.0-8080-4) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)
18:42:12,766 ERROR [stderr] (http--0.0.0.0-8080-4) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
18:42:12,767 ERROR [stderr] (http--0.0.0.0-8080-4) at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153)
18:42:12,768 ERROR [stderr] (http--0.0.0.0-8080-4) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)
18:42:12,768 ERROR [stderr] (http--0.0.0.0-8080-4) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
18:42:12,769 ERROR [stderr] (http--0.0.0.0-8080-4) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
18:42:12,770 ERROR [stderr] (http--0.0.0.0-8080-4) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368)
18:42:12,771 ERROR [stderr] (http--0.0.0.0-8080-4) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)
18:42:12,774 ERROR [stderr] (http--0.0.0.0-8080-4) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671)
18:42:12,774 ERROR [stderr] (http--0.0.0.0-8080-4) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930)
18:42:12,775 ERROR [stderr] (http--0.0.0.0-8080-4) at java.lang.Thread.run(Thread.java:745)
xhtml is:
<h:form id="frmItemsPage">
<p:panel id="tblPanel">
<p:dataTable widgetVar="TbItems" id="tbItemsList" var="row"
value="#{unavailableItems.itemsModel}" scrollable="true"
scrollRows="20"
liveScroll="true" rowKey="#{row.upId}"
lazy="true"
scrollHeight="500" style="width:98%; margin:0 auto;"
emptyMessage="No Items." editable="true" editMode="cell" resizableColumns="true"
rowIndexVar="rowIndex">
<p:ajax event="cellEdit" listener="#{unavailableItems.onCellEdit2}" />
<p:column width="12" style="text-align:right;">
<f:facet name="header">
<h:outputText id="codeLabel" value="Item Code" />
</f:facet>
<h:outputText id="itemCode" value="#{row.itemCode}">
</h:outputText>
</p:column>
<p:column headerText="Description" width="115">
<p:cellEditor>
<f:facet name="output"><h:outputText id="desOutpt" value="#{row.description}" />
</f:facet>
<f:facet name="input">
<p:selectOneMenu id="desciprtion" value="#{row.description}"
required="false" style="width:185px;">
<f:selectItems value="#{unavailableItems.descriptions}" />
</p:selectOneMenu>
</f:facet>
</p:cellEditor>
</p:column>
<f:facet name="footer"></f:facet>
</p:dataTable>
</p:panel>
</h:form>
and my bean is:
@ManagedBean(name = "unavailableItems")
@ViewScoped
public class UnavailableItemsBean implements Serializable {
private static final long serialVersionUID = 1L;
private List<String> descriptionsStrings;
private List<SelectItem> descriptions;
private LazyDataModel<Item> itemsModel;
public UnavailableAssetsPageBean() {
this.loadItems();
this.setDescriptionsStrings(DescriptionDAO.getInstance().getAllDescriptions());
}
public void loadItems() {
this.itemsModel = new LazyDataModel<Item>() {
private static final long serialVersionUID = 1L;
@Override
public List<Item> load(int first, int pageSize, String sortField, SortOrder sortOrder,
Map<String, Object> filters) {
List<Item> items = ItemDAO.getInstance().getUnavailableItems(first,
pageSize + first);
int totalRecords = ItemDAO.getInstance().getUnavailableItemsCount();
itemsModel.setRowCount(totalRecords);
RequestContext.getCurrentInstance().update("frmItemsPage:tbItemsList");
return items;
}
};
}
public void onCellEdit2(CellEditEvent event) {
DataTable dataTable = (DataTable) event.getSource();
Item item = (Item) dataTable.getRowData();
Object oldValue = event.getOldValue();
Object newValue = event.getNewValue();
System.out.println("old value: "+oldValue);
System.out.println("new value: "+newValue);
}
public List<SelectItem> getDescriptions() {
setDescriptions();
return descriptions;
}
public void setDescriptions() {
descriptions = new ArrayList<SelectItem>();
descriptions.add(new SelectItem("", ""));
for (String des : descriptionsStrings) {
descriptions.add(new SelectItem(des, des));
}
}
public List<String> getDescriptionsStrings() {
return descriptionsStrings;
}
public void setDescriptionsStrings(List<String> descriptionsStrings) {
this.descriptionsStrings = descriptionsStrings;
}
public LazyDataModel<Item> getItemsModel() {
return itemsModel;
}
public void setItemsModel(LazyDataModel<Item> itemsModel) {
this.itemsModel = itemsModel;
}
}
the error sometimes also appears while scrolling (live scroll). I am using primefaces 5.3, JSF 2.0.4, JBoss AS-7.1.1.Final