Как мне зарегистрировать пользовательский конвертер типов в Spring? - PullRequest
5 голосов
/ 16 сентября 2008

Мне нужно передать экземпляр UUID через параметр запроса http. Spring нуждается в специальном конвертере типов (из String) для регистрации. Как мне его зарегистрировать?

Ответы [ 4 ]

4 голосов
/ 16 сентября 2008

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

4 голосов
/ 16 сентября 2008

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

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

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

Хорошо сработало для меня.

2 голосов
/ 12 октября 2009

В продолжение предыдущего примера.

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

@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" ;
  }
}

Property de-munger

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)) ;
  }

}
0 голосов
/ 16 сентября 2008

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

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

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

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

В частности, обратите внимание на аннотации @ RequestParam и @ ModelAttribute ?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...