java web-applications autocomplete wicket

java - usando AutoCompleteTextField en wicket sin String como el tipo genérico



web-applications (1)

Esto no está relacionado con el controlador de eventos, es causado por la falta de un tipo de modelo establecido en su componente.

Los componentes del formulario pueden derivar el tipo de modelo de 3 fuentes:

  1. Resuélvalo automáticamente si está utilizando un PropertyModel o un CompoundPropertyModel .
  2. Aceptarlo como un parámetro constructor adicional.
  3. A través del método setType() .
  4. (Si no se aplica ninguna de las opciones anteriores, el comportamiento predeterminado es usar String o Boolean para casillas de verificación).

Estas son sus opciones, puede elegir cualquiera de las tres, pero creo que 1 es mejor que 2, que es mejor que 3.

Actualización: Probablemente ya sepas esto, pero si tu clase personalizada es realmente personalizada, también necesitarás un IConverter que maneje las conversiones String <-> Someclass: puedes registrarlo con la aplicación o anular getConverter(Class<?> clazz ) método para devolverlo.

Esta pregunta sigue a esto: manejo para cambiar evento de AutoCompleteTextField en wicket

Intento utilizar AutoCompleteTextField con una clase personalizada como tipo genérico y agregar un AjaxFormComponentUpdatingBehavior. Lo que quiero decir es que quiero tener un

AutoCompleteTextField<SomeClass> myAutoComplete = ...;

y después de eso agregue un AjaxFormComponentUpdatingBehavior:

myAutoComplete.add(new AjaxFormComponentUpdatingBehavior("onchange") { @Override protected void onUpdate(AjaxRequestTarget target) { System.out.println( "Value: "+getValue() ); } });

El problema es que, por algún motivo, agregar ese comportamiento hace que el formulario intente establecer el objeto modelo con una Cadena (aunque AutoCompleteTextField tiene un tipo genérico de SomeClass), lo que provoca una ClassCastException cuando se activa el evento onchange.

¿Hay alguna forma de utilizar AutoCompleteTextField sin que sea AutoCompleteTextField<String> ? No pude encontrar ningún ejemplo. ¡Gracias por tu tiempo!

y gracias al usuario biziclop por su ayuda en este asunto.