Search code examples
javatapestry

Tapestry - Dynamic properties for radio groups


I have a loop over a radio group element. I'm trying to know which selected value each radio group has. Is there a way to dynamically generate value properties?

It works fine when it's only one radio group.

My .tml file:

<t:loop source="mapWaiverHeaderWithDetails.keySet()"
                    value="waiverHeader" t:id="mapWaiverHeader">            
                            <div id="waivers_${waiverHeader.code}"
                                class="panel-collapse collapse in">
                                <div id="primary" class="panel-body editable">
                                    <t:radiogroup value="selectedWaiverDetail" encoder="waiverDetailEncoder">
                                        <ul>
                                            <t:loop source="waiverDetails" value="waiverDetail">
                                            ... 
                                            </t:loop>
                                        </ul>
                                    </t:radiogroup>
                                </div>
                            </div>
                </t:loop>

My .java file:

@Property
private WaiverDetail selectedWaiverDetail;

Thanks


Solution

  • You could use the map: binding prefix from tapestry-stitch (demo here)

    Then you could declare:

    @Property
    private Map<String, WaiverDetail> waiverDetailMap;
    
    void onPrepareForSubmit() {
        waiverDetailMap = new LinkedHashMap<String, WaiverDetail>();
    }
    

    And

    <t:radiogroup value="map:waiverDetailMap[waiverHeader.code]" encoder="waiverDetailEncoder">