Как я регистрирую пользовательский конвертер типов в Spring?

5
задан alexei.vidmich 15 September 2008 в 23:38
поделиться

4 ответа

У меня есть контроллер MVC с аннотациями RequestMapping. Один метод имеет параметр типа UUID. Спасибо инструментарий, после чтения о WebDataBinder, я полагал, что мне нужен метод как это в моем контроллере:

@InitBinder
public void initBinder(WebDataBinder binder) {
    binder.registerCustomEditor(UUID.class, new UUIDEditor());
}

UUIDEditor просто расширяет PropertyEditorSupport и переопределяет getAsText () и setAsText ().

Работавший для меня приятно.

4
ответ дан 13 December 2019 в 22:19
поделиться

См. главу 5 пружинного справочника здесь: 5.4.2.1. Регистрация дополнительного пользовательского PropertyEditors

4
ответ дан 13 December 2019 в 22:19
поделиться

Не уверенный, что Вы спрашиваете?

Spring идет с CustomEditorConfigurer для предоставления пользовательской строки <-> Объектные преобразователи.

Для использования этого просто добавьте CustomEditorConfigurer как боб к конфигурации и добавьте пользовательские преобразователи. Однако эти преобразователи обычно используются при преобразовании строковых атрибутов в файле конфигурации в реальные объекты.

Если Вы используете Spring MVC, то смотрите на раздел по аннотируемому MVC

А именно, взгляните на @RequestParam и @ModelAttribute аннотации?

Надеюсь, это поможет?

0
ответ дан 13 December 2019 в 22:19
поделиться

Расширение к предыдущему примеру.

Класс контроллера

@Controller
@RequestMapping("/showuuid.html")
public class ShowUUIDController
{

  @InitBinder
  public void initBinder(WebDataBinder binder)
  {
    binder.registerCustomEditor(UUID.class, new UUIDEditor());
  }

  public String showuuidHandler (@RequestParam("id") UUID id, Model model)
  {
    model.addAttribute ("id", id) ;
    return "showuuid" ;
  }
}

Удаление свойств

class UUIDEditor extends java.beans.PropertyEditorSupport
{

  @Override
  public String getAsText ()
  {
    UUID u = (UUID) getValue () ;
    return u.toString () ;
  }

  @Override
  public void setAsText (String s)
  {
    setValue (UUID.fromString (s)) ;
  }

}
2
ответ дан 13 December 2019 в 22:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: