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 !"

Reply via email to