Hi... i got another problem here, using select component inside a form. well, when it's on "add" mode....it works to add new entry in the database.
but when i try to edit it ("edit" mode). the select component didn't showed the selected value but back to normal condition (ordered list value). could anyone help me to solve this problem ? here's my code : ---------------------------------------------------------------------------------------------------------------------------------- *PlayerForm.java* public class PlayerForm extends BaseFormPage{ @Inject private IPlayerDao playerDao; @Inject private IClubDao clubDao; @Persist private Player player; private Club club; @Component private Form playerForm; private List<Club> clubList; private String idPlayer; public IClubDao getClubDao() { return clubDao; } public IPlayerDao getPlayerDao() { return playerDao; } public Player getPlayer() { return player; } public Club getClub() { return club; } public void setClub(Club club) { this.club = club; } public List<Club> getClubList() { clubList = getClubDao().queryForList("", ""); return clubList; } public ClubSelectionModel getClubSelectionModel() { return new ClubSelectionModel(getClubList()); } public ValueEncoder<Club> getClubValueEncoder(){ return new ClubValueEncoder(getClubList()); } void onPrepare(){ if(player == null){ player = new Player(); } if(club == null){ club = new Club(); } } //it's used for back button action, so it's turn back the value into null void cleanupRender() { player = null; club = null; } void onActionFromClear(){ player = null; playerForm.clearErrors(); } //submit action, i have to make player back to null Object onSuccessFromPlayerForm(){ if(getPlayer().getIdPlayer()==null){ getPlayer().setIdPlayer(getIdPrimaryKey().generateId()); getPlayer().setIdClub(getClub().getIdClub()); getPlayerDao().insert(getPlayer()); }else{ getPlayer().setClub(club); getPlayerDao().update(getPlayer()); } player = null; return PlayerGrid.class; } void onActivate(String idPlayer){ this.idPlayer = idPlayer; player = (Player) getPlayerDao().findByPrimaryKey(idPlayer); } String onPassivate(){ return idPlayer; } } ---------------------------------------------------------------------------------------------------------------------------------- *PlayerForm.tml* <form t:type="Form" t:id="playerForm"> <t:errors/> <table class="soria"> <tr> <td><t:label for="firstNameField"/></td> <td> :</td> <td><input t:type="TextField" t:id="firstNameField" value=" Player.firstName" validate="required,minlength=3" size="20" label="First Name"/></td> </tr> <tr> <td><t:label for="midNameField"/></td> <td> :</td> <td><input t:type="TextField" t:id="midNameField" value=" Player.midName" size="20" label="Middle Name"/></td> </tr> <tr> <td><t:label for="lastNameField"/></td> <td> :</td> <td><input t:type="TextField" t:id="lastNameField" value=" Player.lastName" validate="required" size="20" label="Last Name"/></td> </tr> <tr> <td><t:label for="clubSelect"/></td> <td> </td> <td><t:select t:id="clubSelect" model="clubSelectionModel" value="club" encoder="clubValueEncoder" label="Club"/></td> </tr> <tr> <td><t:label for="defaultPriceField"/></td> <td> </td> <td><input t:type="TextField" t:id="defaultPriceField" value="Player.defaultPrice" validate="required" size="20" label="Default Price"/></td> </tr> <tr><td colspan="3"></td></tr> <tr> <td colspan="3"> <input type="submit" label="Save" dojoType=" dijit.form.Button" iconClass="dijitEditorIcon dijitEditorIconSave"/> </td> </tr> </table> </form> ---------------------------------------------------------------------------------------------------------------------------------- *ClubSelectionModel.java* public class ClubSelectionModel implements SelectModel { private List<Club> clubList; public ClubSelectionModel(List<Club> clubList){ this.clubList = clubList; } public List<OptionGroupModel> getOptionGroups() { return getSelectModel().getOptionGroups(); } public List<OptionModel> getOptions() { return getSelectModel().getOptions(); } public void visit(SelectModelVisitor visitor) { getSelectModel().visit(visitor); } public SelectModel getSelectModel() { List<OptionModel> optionModelList = new ArrayList<OptionModel>(); for(Club club: clubList) { optionModelList.add(new OptionModelImpl(club.getClubName(), false, club, new String[0])); } return new SelectModelImpl(null, optionModelList); } } ---------------------------------------------------------------------------------------------------------------------------------- *ClubValueEncoder.java* public class ClubValueEncoder implements ValueEncoder<Club> { private List<Club> clubList; public ClubValueEncoder(List<Club> clubList) { this.clubList = clubList; } public String toClient(Club club) { return club.getClubName(); } public Club toValue(String value) { for(Club club : clubList){ if(club.getClubName().equals(value)){ return club; } } return null; } }