I have a component that that is based on the DHTML tree component Erik made
on the wiki.  I've had it working for several months, and recently I found I
needed to move this component to it's own project.  So now it is used as a
component library instead of being within the application that uses it.

Here is the tree component on the wiki:
http://wiki.apache.org/tapestry/Tapestry5TreeComponent

This is the code that is in the equivalent of a "TreeDemo" page on the
wiki.  In my actual code, this is also a component, but that has never
mattered before.

    <t:t5phy6.dhtmltree.tree treeId='literal:reporttree' source="treenodes"
currentNode="node">
    <t:actionlink t:id="tree" context='node.identifier'>
    ${node.displayName}
    </t:actionlink>
    </t:t5phy6.dhtmltree.tree>

With the code like this, I get an error:
Render queue error in BeginRender[setup/HierarchicalSetupPage:
treemenureport.tree]: Parameter input was null or contained only whitespace.

Where the last highlighted line is this:
<t:actionlink t:id="tree" context="node.identifier">

Here is the trace:
Parameter input was null or contained only whitespace.
Stack trace

   - org.apache.tapestry.ioc.internal.util.Defense.notBlank(Defense.java
   :59)
   - org.apache.tapestry.internal.TapestryInternalUtils.encodeContext(
   TapestryInternalUtils.java:519)
   -
   org.apache.tapestry.internal.services.ComponentInvocationImpl.getPath(
   ComponentInvocationImpl.java:101)
   -
   org.apache.tapestry.internal.services.ComponentInvocationImpl.buildURI
   (ComponentInvocationImpl.java:60)
   - org.apache.tapestry.internal.services.LinkImpl.buildURI(
   LinkImpl.java:105)
   - org.apache.tapestry.internal.services.LinkImpl.toURI(LinkImpl.java
   :91)
   - org.apache.tapestry.corelib.base.AbstractLink.buildHref(
   AbstractLink.java:59)
   - org.apache.tapestry.corelib.base.AbstractLink.writeLink(
   AbstractLink.java:79)
   -
   org.apache.tapestry.corelib.base.AbstractComponentEventLink.beginRender
   (AbstractComponentEventLink.java:64)
   -
   org.apache.tapestry.corelib.base.AbstractComponentEventLink.beginRender
   (AbstractComponentEventLink.java)
   -
   org.apache.tapestry.internal.structure.ComponentPageElementImpl$11$1.run
   (ComponentPageElementImpl.java:338)
   -
   org.apache.tapestry.internal.structure.ComponentPageElementImpl.invoke
   (ComponentPageElementImpl.java:874)
   -
   org.apache.tapestry.internal.structure.ComponentPageElementImpl.access$100
   (ComponentPageElementImpl.java:54)
   -
   org.apache.tapestry.internal.structure.ComponentPageElementImpl$11.render
   (ComponentPageElementImpl.java:342)
   - org.apache.tapestry.internal.services.RenderQueueImpl.run(
   RenderQueueImpl.java:63)
   - org.apache.tapestry.internal.services.PageRenderQueueImpl.render(
   PageRenderQueueImpl.java:63)
   - org.apache.tapestry.services.TapestryModule$19.renderMarkup(
   TapestryModule.java:1310)
   - org.apache.tapestry.services.TapestryModule$23.renderMarkup(
   TapestryModule.java:1418)
   - org.apache.tapestry.services.TapestryModule$22.renderMarkup(
   TapestryModule.java:1399)
   - org.apache.tapestry.services.TapestryModule$21.renderMarkup(
   TapestryModule.java:1381)
   - org.apache.tapestry.services.TapestryModule$20.renderMarkup(
   TapestryModule.java:1363)
   -
   org.apache.tapestry.internal.services.PageMarkupRendererImpl.renderPageMarkup
   (PageMarkupRendererImpl.java:55)
   -
   
org.apache.tapestry.internal.services.PageResponseRendererImpl.renderPageResponse
   (PageResponseRendererImpl.java:57)
   -
   org.apache.tapestry.internal.services.PageRenderRequestHandlerImpl.handle
   (PageRenderRequestHandlerImpl.java:59)
   - org.apache.tapestry.internal.services.PageRenderDispatcher.dispatch(
   PageRenderDispatcher.java:77)
   - org.apache.tapestry.services.TapestryModule$13.service(
   TapestryModule.java:932)
   - mil.army.oacsim.IEIS.wui.tapestry.services.AppModule$1.service(
   AppModule.java:83)

...more

When I change the code as seen below, everything renders fine but obviously
clicking the links does not do anything.

    <t:t5phy6.dhtmltree.tree treeId='literal:reporttree' source="treenodes"
currentNode="node">
    <t:actionlink t:id="tree">
    ${node.displayName}
    </t:actionlink>
    </t:t5phy6.dhtmltree.tree>


So I know it is seeing the node/currentnode, since the correct names are
being printed out.
I've also tried having all the t5phy6.dhtmltree.tree component parameters be
defined in the TreeDemo class, but I get the same error.

I've also tried making an intermediate method in TreeDemo to replace

<t:actionlink t:id="tree" context="node.identifier">

with

<t:actionlink t:id="tree" context="nodeContext">

where nodeContext is

public String getNodeContext() {
      return getNode().getIdentifier();
}


I've been working on this for a good 6 hours, and now I'm blinded as to what
the problem is.
I've made sure the all component libraries are up to date and synchronized.
This is Tapestry 5.0.10 Snapshot, but the problem is probably me.

Daniel

Reply via email to