Why not use an enum and BeanEditForm?
Olle


2008/12/20 dwi ardi irawan <penyihirke...@gmail.com>

> hi all....i got a little problem here
>
> i want to make this into a select component :
> if the label is "user" then the value would be : 0(Integer)
> if the label is "administrator" then the value would be : 1(Integer)
>
> i did that in this way :
> *User.java*
> private String username;
> private String password
> private Integer status;
> ......
>
> *userForm.tml*
> <tr>
>      <td><t:label for="statusSelect"/></td>
>      <td>&nbsp; :</td>
>       <td><t:select t:id="statusSelect" model="statusSelectionModel"
> value="User.status" encoder="statusValueEncoder" label="Status"/></td>
> </tr>
>
> *userForm.java*
> ......
> @Property
> private User user;
> ......
>
> public List<String> getStatusList() {
>        if(statusList==null){
>            statusList = new ArrayList<String>();
>            statusList.add("user");
>            statusList.add("administrator");
>        }
>        return statusList;
> }
> public StatusSelectionModel getStatusSelectionModel() {
>        return new StatusSelectionModel(getStatusList());
> }
>
> public ValueEncoder<Integer> getStatusValueEncoder(){
>        return new StringValueEncoder();
> }
>
> *StatusSelectionModel.java*
>
> public class StatusSelectionModel implements SelectModel{
>
>    private List<String> statusList;
>
>    public StatusSelectionModel(List<String> formationList){
>        this.statusList = formationList;
>    }
>    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(String status: statusList) {
>            if(status.equals("user")){
>                optionModelList.add(new OptionModelImpl(status,new
> Integer(0)));
>            }else if (status.equals("administrator")) {
>                optionModelList.add(new OptionModelImpl(status,new
> Integer(1)));
>            }
>
>        }
>        return new SelectModelImpl(null, optionModelList);
>    }
>
> }
>
> *StringValueEncoder .java*
> public class StringValueEncoder implements ValueEncoder<Integer> {
>
>    public String toClient(Integer value) {
>        return value.toString();
>    }
>
>    public Integer toValue(String value) {
>        // TODO Auto-generated method stub
>        return Integer.parseInt(value);
>    }
>
> }
>
>
> but i got following error when i tried to submit it :
>
> *Failure writing parameter 'value' of component UserFormPage:statusselect:
> Coercion of user to type java.lang.Integer (via String --> Long, Long -->
> Integer) failed: For input string: "user"*
>
>
> *
> *
>
> could somebody help me
>
>
> thnx u very much
>
> --
> http://dwiardiirawan.blogspot.com
> "cos everyone could be extraordinary...lighten up !"
>



-- 
Olle Hallin
Senior Java Developer and Architect
olle.hal...@crisp.se
www.crisp.se

Reply via email to