Uploaded image for project: 'Tapestry'
  1. Tapestry
  2. TAPESTRY-1709

Radio component throws an exception when used with RadioGroup and Label

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 5.0.5
    • 5.0.6
    • tapestry-core
    • 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.

      Attachments

        1. TAPESTRY-1709.patch
          5 kB
          Nick Westgate

        Activity

          People

            hlship Howard Lewis Ship
            sicklittlemonkey Nick Westgate
            Votes:
            1 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: