You have to use the TextField constructor that specifies the type of the model: https://ci.apache.org/projects/wicket/apidocs/8.x/org/apache/wicket/markup/html/form/TextField.html#TextField-java.lang.String-org.apache.wicket.model.IModel-java.lang.Class-
It should be: add(new TextField<>("year", LambdaModel.of(obj::getYear, obj::setYear), Integer.class)); That one always gets me too... Thanks Andrew On Sat, Jun 16, 2018 at 3:30 AM smallufo <small...@gmail.com> wrote: > After upgrading to 8.0 , I tried the exciting LambdaModel , try to replace > the non-TypeSafety PropertyModel > But I found it cannot handle type intelligently. > For a TextField<Integer> , for example : > > form.add(new TextField<Integer>("year", LambdaModel.of(obj::getYear, > obj::setYear ))); > > At runtime , it reports Cannot cast from String to Integer. > > I have to rewrite getter / setter to String type (and do conversion in > setter ) , but the backing field is Integer type. (And change > TextField<Integer> to TextField<String> , or <> ) > > This is pity ... > Did I miss anything ? > > Thanks. >