Tapestry
  1. Tapestry
  2. TAPESTRY-1709

Radio component throws an exception when used with RadioGroup and Label

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 5.0.5
    • Fix Version/s: 5.0.6
    • Component/s: tapestry-core
    • Labels:
      None

      Description

      Example code that breaks:
      <t:RadioGroup t:id="group1">
      <t:Radio t:id="radio1" t:value="value1"/><t:Label for="radio1"/>
      </t:RadioGroup>

      Exception is:
      No object of type org.apache.tapestry.RadioContainer is available from the Environment.

      The reason is that the Label validation rendering calls Radio.getElementName() after the RadioGroup has been popped from the environment.
      A simple fix is to cache the element name:

      private String _elementName;
      ...
      public String getElementName()

      { return _elementName; }

      ...
      void beginRender(MarkupWriter writer)

      { ... _elementName = _container.getElementName(); writer.element("input", "type", "radio", "id", _clientId, "name", _elementName, "value", value); ... }

      Cheers,
      Nick.

        Activity

        No work has yet been logged on this issue.

          People

          • Assignee:
            Howard M. Lewis Ship
            Reporter:
            Nick Westgate
          • Votes:
            1 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development