You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Weisu <we...@gmail.com> on 2008/03/13 09:44:08 UTC

Re: T5: Palette

Hi Gabriel, Could you help me on ValueEncoder? The data is return from
database as a List. My palette component is like this:

<t:palette t:id="districts" encoder="districtEncoder"
model="districtModel"/>

My class is like this:

@Persist
private List districts;
public List getDistricts() {return districts;}

public void setDistricts(List districts) {this.districts = districts;}
	
@Persist
private List districtModel;
public List getDistrictModel() {
	districtModel = getEditService().getDistricts(); //This return a List from
database
	return districtModel;
}

public void setDistrictModel(List districtModel) {this.districtModel =
districtModel;}


So how do I define the encoder?

Thanks in advance!

Weisu.


-- 
View this message in context: http://www.nabble.com/T5%3A-Palette-tp15347141p16023549.html
Sent from the Tapestry - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: T5: Palette

Posted by Gabriel Landais <la...@codelutin.com>.
Weisu a écrit :
> Hi Gabriel, Could you help me on ValueEncoder? The data is return from
> database as a List. My palette component is like this:
>
> <t:palette t:id="districts" encoder="districtEncoder"
> model="districtModel"/>
>
> My class is like this:
>
> @Persist
> private List districts;
> public List getDistricts() {return districts;}
>
> public void setDistricts(List districts) {this.districts = districts;}
> 	
> @Persist
> private List districtModel;
> public List getDistrictModel() {
> 	districtModel = getEditService().getDistricts(); //This return a List from
> database
> 	return districtModel;
> }
>
> public void setDistrictModel(List districtModel) {this.districtModel =
> districtModel;}
>
>
> So how do I define the encoder?
>
> Thanks in advance!
>
> Weisu.
>
>
>   
This is how I've done it :

.tml :

<input t:type="Palette" model="groups" selected="groupsOfUser" 
encoder="groupEncoder" />

Value encoder :

public class GroupValueEncoder implements ValueEncoder<Group> {

    public GroupValueEncoder(parameters...) {
        super();
        ....
    }

    /* (non-Javadoc)
     * @see org.apache.tapestry.ValueEncoder#toClient(java.lang.Object)
     */
    public String toClient(Group group) {
        return Integer.toString(group.getId());
    }

    /* (non-Javadoc)
     * @see org.apache.tapestry.ValueEncoder#toValue(java.lang.String)
     */
    public Group toValue(String group) {
        Group group = retrieveGroupFromId(group);
        return group;
    }

}


Page class :

/** The selected groups. */
@Persist
private List<Group> groupsOfUser;

/** The group encoder (one per user). */
@Persist
private GroupValueEncoder groupEncoder;

/** Called on initialization. */
void setup(int userId) throws SimExplorerException {
 groupEncoder = new GroupValueEncoder(parameters);
}

public List<Group> getGroups() {
 // fill and return the list with all groups
}

public ValueEncoder<Group> getGroupEncoder() {
     return groupEncoder;
}

Group :
It has to implement hashCode(), as elements in both lists (available and 
selected) can be different in terms of instance but equals in terms of 
logic. T5 uses Map internally, so equals and hashCode should be 
implemented on your class.

-- 
Gabriel <la...@codelutin.com>
http://www.codelutin.com
tel : 02 40 50 29 28 / fax : 09 59 92 29 28


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org