Here's the java code:
package edu.asu.wit.eadvisor.ds.t5.pages.t5.admin; import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Comparator; import javax.servlet.http.HttpServletRequest; import org.apache.tapestry.annotations.Component; import org.apache.tapestry5.OptionGroupModel; import org.apache.tapestry5.OptionModel; import org.apache.tapestry5.PersistenceConstants; import org.apache.tapestry5.SelectModel; import org.apache.tapestry5.annotations.InjectPage; import org.apache.tapestry5.annotations.Persist; import org.apache.tapestry5.annotations.Property; import org.apache.tapestry5.internal.OptionModelImpl; import org.apache.tapestry5.ioc.annotations.Inject; import org.apache.tapestry5.util.AbstractSelectModel; import edu.asu.wit.eadvisor.ds.hib.dao.TransferAgreementsDao; import edu.asu.wit.eadvisor.ds.hib.eadvisor.TransferCaCollege; import edu.asu.wit.eadvisor.ds.hib.eadvisor.TransferCaCollegeMajor; import edu.asu.wit.eadvisor.ds.hib.eadvisor.TransferCaInterestArea; import edu.asu.wit.eadvisor.ds.t5.components.MultipleValueEncoder; public class TransferAddAreaToCollege { @Property //@Persist(PersistenceConstants.FLASH) private List<MyObject> interestCodes; @Property private List<MyObject> ficeCodes; @Property private String notes; @Property private Map<String, String> collegesList; @Property private Map<String, String> areasList; @Property private List<MyObject> myList; @Property private List<MyObject> myList1; @Property private List<MyObject> myList2; @Property @Persist("flash") private String message; @Inject private TransferAgreementsDao dao; @Inject private HttpServletRequest request; @InjectPage private TransferAddAreaToCollege page; public Object onActivate(){ if(!request.getRequestURL().toString().contains("admin")) return page; else{ if(interestCodes == null){ interestCodes = new ArrayList<MyObject>(); } if(ficeCodes == null){ ficeCodes = new ArrayList<MyObject>(); } List<TransferCaCollege> colleges = dao.getCollegeList(); Map<String, String> m1 = new HashMap<String, String>(); for (int i=0; i<colleges.size(); i++) { m1.put(colleges.get(i).getFiceCode(), colleges.get(i).getCollegeName()); } Map<String,String> sortedM1 = sortByComparator(m1); collegesList = sortedM1; List<TransferCaInterestArea> areas = dao.getInterestAreaList(); Map<String, String> m2 = new HashMap<String, String>(); for (int i=0; i<areas.size(); i++) { m2.put(areas.get(i).getInterestCode().toString(), areas.get(i).getAsuArea()); } Map<String,String> sortedM2 = sortByComparator(m2); areasList = sortedM2; //myList = new ArrayList<MyObject>(); //notice this what i used first and it worked with the model in the tml file set to model="myList" myList1 = new ArrayList<MyObject>(); // this is added when I wanted to have to fields with multiple select myList2 = new ArrayList<MyObject>(); // this is added when I wanted to have to fields with multiple select Object[] keys1 = areasList.keySet().toArray(); Object[] keys2 = collegesList.keySet().toArray(); for (int i=0; i< keys1.length; i++){ //System.out.println("-------> " + i + ":" +areasList.get(i) ); MyObject obj = new MyObject(new Integer((String)keys1[i]), areasList.get((String)keys1[i])); myList1.add(obj); } for (int i=0; i< keys2.length; i++){ //System.out.println("-------> " + i + ":" +areasList.get(i) ); MyObject obj = new MyObject(new Integer((String)keys2[i]), collegesList.get((String)keys2[i])); myList2.add(obj); } return null; } } public void onSuccess(){ System.out.println("interestCodes.length = " + interestCodes.size()); for (int i=0; i< interestCodes.size(); i++) { System.out.println("interstCodes("+interestCodes.get(i).getId()+"): "+interestCodes.get(i).getName() ); } System.out.println("ficeCodes.length = " + interestCodes.size()); for (int i=0; i< interestCodes.size(); i++) { System.out.println("ficeCodes("+interestCodes.get(i).getId()+"): "+ficeCodes.get(i).getName() ); } System.out.println("myList.length = " + interestCodes.size()); for (int i=0; i< myList.size(); i++) { System.out.println("myLsit("+myList.get(i).getId()+"): "+myList.get(i).getName() ); } /* TransferCaCollegeMajor areaToColg = new TransferCaCollegeMajor(interestCode, ficeCode, notes, new Date(), (String)request.getSession().getAttribute("asuriteid")); boolean results = dao.insertTransferCaCollegeMajor(areaToColg); if(results) message = "The selected area of interest was added to the selected college."; else message = "There was an error adding this area of interest to the selected college."; */ } public static Map sortByComparator(Map unsortMap) { List list = new LinkedList(unsortMap.entrySet()); //sort list based on comparator Collections.sort(list, new Comparator() { public int compare(Object o1, Object o2) { return ((Comparable) ((Map.Entry) (o1)).getValue()) .compareTo(((Map.Entry) (o2)).getValue()); } }); //put sorted list into map again Map sortedMap = new LinkedHashMap(); for (Iterator it = list.iterator(); it.hasNext();) { Map.Entry entry = (Map.Entry)it.next(); sortedMap.put(entry.getKey(), entry.getValue()); } return sortedMap; } public MultipleValueEncoder<MyObject> getEncoder(){ return new MultipleValueEncoder<MyObject>(){ public String toClient(MyObject object) { return object.getId().toString(); } public List<MyObject> toValue(String[] values) { List<MyObject> objects = new ArrayList<MyObject>(); for(String value: values){ for(MyObject myObject: myList) if(myObject.getId().equals(Integer.parseInt(value))){ objects.add(myObject); } } return objects; } }; } //Model public SelectModel getModel(){ return new AbstractSelectModel(){ public List<OptionGroupModel> getOptionGroups() { return null; } public List<OptionModel> getOptions() { final List<OptionModel> options = new ArrayList<OptionModel>(); for(final MyObject myObject: myList){ options.add(new OptionModelImpl(myObject.getName(), myObject)); } return options; } }; } } ==================== And this is part of what my tml look like <t:MultipleSelect value='interestCodes' model='myList1' encoder='encoder'/> <t:MultipleSelect value='ficeCodes' model='myList2' encoder='encoder'/> ================== -- View this message in context: http://tapestry.1045711.n5.nabble.com/Tapestry-5-2-5-Select-component-s-multiple-property-tp4304338p5712212.html Sent from the Tapestry - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org