Search code examples
javatapestry

Tapestry loop through hashmap


I'm trying to loop through a hashmap and display a number checkboxes with id the key of the hashmap and label the value of the hashmap. Anyone knows how the tapestry syntax for that is?

Cheers Dimitris


Solution

  • You should be able to loop through the key set like this:

    <form t:type="Form">
        <t:Loop t:source="myMap.keySet()" t:value="currentKey"> 
            <input type="Checkbox" t:type="Checkbox" t:id="checkbox"
                t:value="currentValue"/>
            <label t:type="Label" for="checkbox">${mapValue}</label>
        </t:Loop>
    </form>
    

    Class file:

    @Property
    private Object currentKey;
    
    @Persist
    private Set<String> selection = new HashSet<String>();
    
    public Map<String,String> getMyMap() {
        ...
    }
    
    public boolean getCurrentValue() {
         return this.selection.contains(this.currentKey);
    }
    
    public void setCurrentValue(final boolean currentValue) {
        final String mapValue = this.getMapValue();
    
        if (currentValue) {
            this.selection.add(mapValue);
        } else {
            this.selection.remove(mapValue);
        }
    }
    
    
    public String getMapValue() {
        return this.getMyMap().get(this.currentKey);
    }
    

    I haven't compiled this, but it should help you get started.