AnsweredAssumed Answered

Component javax.faces.component.UIViewRoot is no ValueHolder

Question asked by esource on Jun 23, 2010
Latest reply on Jun 24, 2010 by esource
I'm getting this error:

Component javax.faces.component.UIViewRoot is no ValueHolder, cannot set value

11:33:24,062 User:admin ERROR [shared_impl.taglib.UIComponentTagUtils] Component
javax.faces.component.UIViewRoot is no ValueHolder, cannot set value.

What does this mean?

I have a .jsp in a dialog that calls a method in the backing bean:


<h:dataTable binding="#{DialogManager.bean.dataTable}" value="#{DialogManager.bean.dataList}" var="dataItem">
    <h:column>
        <f:facet name="header">
            <h:outputText value="ID" />
        </f:facet>
        <h:commandLink value="#{dataItem.id}" action="#{MyBeanDialog.editDataItem}" />
    </h:column>

    <h:column>
        <f:facet name="header">
            <h:outputText value="Name" />
        </f:facet>
       <h:outputText value="#{dataItem.name}" />
    </h:column>

    <h:column>
        <f:facet name="header">
            <h:outputText value="Author" />
        </f:facet>
        <h:outputText value="#{dataItem.author}" />
    </h:column>
</h:dataTable>


in my backing bean dialog:



public class MyBeanDialog extends BaseDialogBean {

    public String editDataItem() {

       if (logger.isDebugEnabled()) logger.debug("editDataItem");      

        // Get selected MyData item to be edited.
        dataItem = (customNode) dataTable.getRowData();

        // Store the ID of the data item in hidden input element.
        dataItemId.setValue(dataItem.getId());

        return "edit"; // Navigation case.
    }   



in my faces-config.xml:


      <navigation-case>
           <from-action>#{MyBeanDialog.editDataItem}</from-action>
           <from-outcome>edit</from-outcome>
           <to-view-id>/jsp/extension/dialogs/edit-data-item.jsp</to-view-id>
       </navigation-case> 

in edit-data-item.jsp:


<h:panelGrid>
    <h:outputText value="ID" />
    <h:outputText value="#{MyBeanDialog.dataItem.id}" />

    <h:outputText value="Name" />
    <h:inputText value="#{MyBeanDialog.dataItem.name}" />

    <h:outputText value="Author" />
    <h:inputText value="#{MyBeanDialog.dataItem.author}" />
</h:panelGrid>


When clicking on

 <h:commandLink value="#{dataItem.id}" action="#{MyBeanDialog.editDataItem}" />

edit-data-item.jsp appears on a screen blank.

What is causing the error? Why aren't the jsf components appearing on the screen?

Outcomes