Uploaded image for project: 'Tapestry 5'
  1. Tapestry 5
  2. TAP5-290

Namespace error when partial-updating a zone with a block

VotersWatch issueWatchersLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 5.0.15
    • 5.0.16
    • tapestry-core
    • None

    Description

      I have a zone that contains two components in its body that i'd like to update on a given event.
      Because i can't return more than one component to update from the event listener method i created a block inside the zone and outside the two components and now return the block from the event listener method. Something like this:

      <t:zone>
      <t:delegate to="myblock"/>
      <t:block>
      <t:component1>
      ...
      </t:component1>
      <t:component2>
      ...
      </t:component2>
      <div>whatever</div>
      </t:block>
      </t:zone>

      I use the delegate to because i want the block content to be visible when the whole page is rendered and not just after the update event.
      So, the page renders just fine. But, when the event is executed i get the following error logged and nothing is updated on the UI:

      [ERROR] TapestryModule.RequestExceptionHandler Processing of request failed with uncaught exception: Namespace prefix for URI 'http://www.w3.org/1999/xhtml' is not defined.
      java.lang.RuntimeException: Namespace prefix for URI 'http://www.w3.org/1999/xhtml' is not defined.
      at org.apache.tapestry5.dom.Element.toNamespacePrefix(Element.java:502)
      at org.apache.tapestry5.dom.Element.toNamespacePrefix(Element.java:504)
      at org.apache.tapestry5.dom.Element.toPrefixedName(Element.java:366)
      at org.apache.tapestry5.dom.Element.toMarkup(Element.java:300)
      at org.apache.tapestry5.dom.Node.toMarkup(Node.java:149)
      at org.apache.tapestry5.dom.Node.writeChildMarkup(Node.java:103)
      at org.apache.tapestry5.dom.Node.getChildMarkup(Node.java:113)
      at org.apache.tapestry5.internal.services.PageRenderQueueImpl.renderPartial(PageRenderQueueImpl.java:150)

      Although the block rendered fine the first time it seems to fail to render upon the partial-update. After some digging i found out that the only way that i could get this to work was to only include tapestry namespace tags inside the block. So if i have something like:

      <div>whatever</div>

      inside the block i get the error. But if i change it to:

      <t:any element="div">whatever</t:any>

      it works just fine.

      Again, the exact same block renders just fine when the page loads.

      Attachments

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            hlship Howard Lewis Ship
            hpalma Hugo Palma
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment