PF3.0:p:outputPanel Cannot find component with ID

UI Components for JSF
smallya
Posts: 264
Joined: 19 Mar 2010, 19:22
Contact:

11 Apr 2011, 04:54

Hi
I just downloaded and added the Primefaces 3.0 nightly build 320 and I have been getting a series of following messages.

INFO: Cannot find component with identifier "dialogPanel" in view.
INFO: Cannot find component with identifier "productGridPanel" in view.
INFO: Cannot find component with identifier "shoppingListDetailsPanel" in view.
INFO: Cannot find component with identifier "shoppingListDetailsPanel" in view.
INFO: Cannot find component with identifier "shoppingListDetailsPanel" in view.
INFO: Cannot find component with identifier "shoppingListDetailsPanel" in view.
INFO: Cannot find component with identifier "shoppingListDetailsPanel" in view.

All these are p:outputPanel used in the page which is being rendered.

some more information
1. The ids of the panels listed in the messages are being referred to in update attributes in p:commandLink elements elsewhere in the page.
2. Since the commandLink is used in dataTable and dataGrid it is repeating as many times as the number of rows (understandably).
3. There is just one form in the page so I am not (have never) qualified the ids with form:elementId notation.

This was working just fine until Friday while I was on the earlier build I was using - Build number 307. Unfortunately (stupid me), I did not retain that zip and the download site does not have it.

Anybody else seeing these errors?

Here is the code

<p:commandLink update="shoppingListDetailsPanel" oncomplete="shoppingDialog.show()" styleClass="ui-icon ui-icon-cart" title="#{bundle.ConfirmShopping}" style="display:inline-block;width:16px;">
<f:setPropertyActionListener target="#{homeController.selectedList}" value="#{item}"/>
</p:commandLink>



<p:outputPanel id="shoppingListDetailsPanel">
<p:dialog id="shoppingListDetailsDialog" header="#{homeController.selectedList.listName}" width="540" height="400" closable="true" closeOnEscape="true" visible="false" draggable="true"
position="absolute" resizable="false" widgetVar="shoppingDialog" zindex="1000">
<h5 style="margin:5px 0 0 40px;width:40%" >Shopping List Items</h5>
<p:dataTable id="shoppingListTable" value="#{homecontroller.selectedList.listContentList}" var="entry"
liveScroll="true" emptyMessage="#{bundle.NoItemsAddedYet}" height="300" style="margin:5px 0 20px 40px;width:40%" >
<p:column headerText="#{bundle.ListListContentTitle_item}">
<h:outputText value="#{entry.product.productName}" rendered="#{!empty entry.product.productName}" />
<h:outputText value="#{entry.customProductName}" rendered="#{!empty entry.customProductName}" />
</p:column>
<p:column headerText="#{bundle.ListListContentTitle_quantity}">
<h:inputText value="#{entry.quantity}" maxlength="4" styleClass="foyo-input" size="3">
<f:validateLength minimum="1" maximum="100"/>
</h:inputText>
</p:column>
<p:column headerText="#{bundle.ListListContentTitle_uom}">
<h:selectOneListbox id="selectUom" value="#{entry.uom}" size="1"><f:selectItems value="#{staticCacheManager.unitNotationList}"/></h:selectOneListbox>
</p:column>
<p:column headerText="X" >
<p:commandLink id="removeFromList" immediate="true" update="shoppingListDetailsPanel" styleClass="ui-icon ui-icon-closethick" actionListener="#{shoppingController.removeItem(entry)}"/>
</p:column>
</p:dataTable>
</p:dialog>
</p:outputPanel>
Last edited by smallya on 12 Apr 2011, 17:23, edited 4 times in total.
Netbeans 7.2| GlassFish 3.2 | PostgreSQL 9.1| MongoDB | Primefaces 3.4.2
_______________________________________________________________
Subraya Mallya
http://tinyhabit.com |http://twitter.com/tinyhabit

smallya
Posts: 264
Joined: 19 Mar 2010, 19:22
Contact:

11 Apr 2011, 05:03

I saw this new attribute called "autoUpdate" in <p:outputPanel>. Assuming it to be a true/false value I tried both - but in vain. Not sure if it had anything to do with the issue that I am seeing.

I had not seen the autoUpdate attribute before and did not find any issue in the issue list that might have requested this addition. I am guessing that is something PF team added as some enhancement.
Netbeans 7.2| GlassFish 3.2 | PostgreSQL 9.1| MongoDB | Primefaces 3.4.2
_______________________________________________________________
Subraya Mallya
http://tinyhabit.com |http://twitter.com/tinyhabit

smallya
Posts: 264
Joined: 19 Mar 2010, 19:22
Contact:

11 Apr 2011, 18:33

I downloaded PF 3.0M1 and still get the same errors. Actually it seems to come for each p:outputPanel so far.
Netbeans 7.2| GlassFish 3.2 | PostgreSQL 9.1| MongoDB | Primefaces 3.4.2
_______________________________________________________________
Subraya Mallya
http://tinyhabit.com |http://twitter.com/tinyhabit

smallya
Posts: 264
Joined: 19 Mar 2010, 19:22
Contact:

12 Apr 2011, 00:58

I went back to PF 2.2.1 and the errors seems to go away indicating it is is only happening in 3.0.x and 3.0M1

But unfortunately i want to be in 3.0M1 as I have already converted my mobile app from Touch to Prime Mobile and it works like a charm.
Netbeans 7.2| GlassFish 3.2 | PostgreSQL 9.1| MongoDB | Primefaces 3.4.2
_______________________________________________________________
Subraya Mallya
http://tinyhabit.com |http://twitter.com/tinyhabit

cagatay.civici
Prime
Posts: 18616
Joined: 05 Jan 2009, 00:21
Location: Cybertron
Contact:

12 Apr 2011, 01:23

That are not errors but info messages indicating that findComponent method cannot find the actual component in view so instead will fallback to the provided id.

Standard JSF 2 ajax throws an exception when it cannot find the component, PrimeFaces will just uses the provided the id instead, this was causing silent potential errors in the past so we just do a log before using the provided id now.

See the algorithm for more info;

http://download.oracle.com/javaee/6/api ... ng.String)

smallya
Posts: 264
Joined: 19 Mar 2010, 19:22
Contact:

12 Apr 2011, 01:32

Thanks Cagatay. Agree they were just INFO messages - was just curious why they started all of a sudden. Thanks for the clarification.
Last edited by smallya on 18 Apr 2011, 04:55, edited 1 time in total.
Netbeans 7.2| GlassFish 3.2 | PostgreSQL 9.1| MongoDB | Primefaces 3.4.2
_______________________________________________________________
Subraya Mallya
http://tinyhabit.com |http://twitter.com/tinyhabit

amazu
Posts: 8
Joined: 29 Oct 2010, 02:55

18 Apr 2011, 03:11

"so we just do the logging before using the id Provided now."
Of course. You have reason. However I could not solve it yet. You could demonstrate, if possible, how to fix this in my code, forgive the ignorance, but this is very important to me.
Thanks Cagatay, I feel honored by your response.

smallya
Posts: 264
Joined: 19 Mar 2010, 19:22
Contact:

18 Apr 2011, 04:58

amazu,
This information is only logged with the PROJECT_STAGE is set to Development in your web.xml. Change it to Production and then the statements are no longer logged

If you did not have this parameter in your web.xml then this is what you should add.

<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Production</param-value>
</context-param>
Netbeans 7.2| GlassFish 3.2 | PostgreSQL 9.1| MongoDB | Primefaces 3.4.2
_______________________________________________________________
Subraya Mallya
http://tinyhabit.com |http://twitter.com/tinyhabit

amazu
Posts: 8
Joined: 29 Oct 2010, 02:55

18 Apr 2011, 05:50

ops .. sorry my fault, I meant to do with the code below (my listener), which forces an update on the component:

Code: Select all

	public void beforePhase(PhaseEvent event) {		
		PhaseId phaseid = event.getPhaseId();		
		if ((phaseid == PhaseId.RENDER_RESPONSE )) {		
			event.getFacesContext().getPartialViewContext().getRenderIds().add("dialog");			 
		}
	}
... since it is causing a NullPointerException, because most can not find the component "dialog".
Fix the problem with code below:

Code: Select all

	public void beforePhase(PhaseEvent event) {		
		PhaseId phaseid = event.getPhaseId();		
		if ((phaseid == PhaseId.RENDER_RESPONSE )) {		
			 RequestContext context = RequestContext.getCurrentInstance();  
		     if(context!=null){		    	
		    	context.addPartialUpdateTarget("dialog");
		     }			 
		}
	}
... but there seems to be the appropriate solution.
Thanks for the reply.

Alex
Posts: 256
Joined: 16 Dec 2010, 14:24
Location: Germany

24 May 2011, 08:36

That are not errors but info messages indicating that findComponent method cannot find the actual component in view so instead will fallback to the provided id.
Sorry for posting in an old thread, but do we use something the wrong way when we get those messages? How can we avoid them (without manipulating the loglevel)?
PrimeFaces 3.2
Mojarra 2.0.2
Glassfish 3.0.1

Post Reply

Return to “PrimeFaces”

  • Information
  • Who is online

    Users browsing this forum: Google [Bot] and 31 guests