i have downstripped my problem to the following code:
Code: Select all
<ui:composition
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Test page</title>
</h:head>
<h:body>
<h:form id="pageForm">
<p:commandButton type="submit" value="Start search" actionListener="#{myBean.updateEntries}" update="@form"/>
<p:dataTable
value="#{myBean.entries}"
var="entry">
<p:column>
<f:facet name="header">
<p:commandLink value="Update" update="@form"/>
</f:facet>
<h:outputText value="Static"/>
</p:column>
</p:dataTable>
</h:form>
</h:body>
</ui:composition>
Code: Select all
12:03:39,793 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/my-app-1.0-SNAPSHOT].[Faces Servlet]] (http--0.0.0.0-8080-1) Servlet.service() for servlet Faces Servlet threw exception: javax.faces.FacesException: Cannot find component with identifier "pageForm" in view.
at org.primefaces.util.ComponentUtils.findClientIds(ComponentUtils.java:249) [primefaces-3.1-SNAPSHOT.jar:]
at org.primefaces.renderkit.CoreRenderer.buildAjaxRequest(CoreRenderer.java:223) [primefaces-3.1-SNAPSHOT.jar:]
at org.primefaces.component.commandlink.CommandLinkRenderer.encodeEnd(CommandLinkRenderer.java:69) [primefaces-3.1-SNAPSHOT.jar:]
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1763) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
at org.primefaces.component.datatable.DataTableRenderer.encodeColumnHeaderContent(DataTableRenderer.java:385) [primefaces-3.1-SNAPSHOT.jar:]
at org.primefaces.component.datatable.DataTableRenderer.encodeColumnHeader(DataTableRenderer.java:361) [primefaces-3.1-SNAPSHOT.jar:]
at org.primefaces.component.datatable.DataTableRenderer.encodeThead(DataTableRenderer.java:566) [primefaces-3.1-SNAPSHOT.jar:]
at org.primefaces.component.datatable.DataTableRenderer.encodeRegularTable(DataTableRenderer.java:226) [primefaces-3.1-SNAPSHOT.jar:]
at org.primefaces.component.datatable.DataTableRenderer.encodeMarkup(DataTableRenderer.java:209) [primefaces-3.1-SNAPSHOT.jar:]
at org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:103) [primefaces-3.1-SNAPSHOT.jar:]
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1763) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
at javax.faces.render.Renderer.encodeChildren(Renderer.java:168) [jboss-jsf-api_2.1_spec-2.0.0.Beta1.jar:2.0.0.Beta1]
http://code.google.com/p/primefaces/iss ... il?id=3155
http://code.google.com/p/primefaces/iss ... il?id=3164
By debugging primefaces i found out, that first call for commandButton is completly right. formatKeywords() delivers the clientId of form and component.findComponent() returns the HtmlForm object. But for the commandLink in the datatable the component.findComponent() call just returned null? In Version 3.0 this leads to following code (ComponentUtils.java, line 249):
Code: Select all
if(context.getApplication().getProjectStage().equals(ProjectStage.Development)) {
logger.log(Level.INFO, "Cannot find component with identifier \"{0}\" in view.", id);
}
buffer.append(id);
Code: Select all
throw new FacesException("Cannot find component with identifier \"" + id + "\" in view.");
Primefaces 3.0 (only failure messages in logfile)
Primefaces 3.1-SNAPSHOT (from 10.01.2012 12 o'clock)
JBoss AS 7.0.2-Final
Please help,
Daniel
PS: If anyone knows how to contribute code to primefaces, please contact me (is PM possible in this forum?).