Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Tapestry loop through hashmap

Tags:

java

tapestry

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

like image 458
Sfairas Avatar asked Mar 12 '10 14:03

Sfairas


1 Answers

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.

like image 76
Henning Avatar answered Oct 22 '22 03:10

Henning