Что делает аннотация @FacesConverter?

Можно ли узнать поподробнее, чем занимается эта аннотация в java?
  • Вопрос задан
  • 2866 просмотров
Пригласить эксперта
Ответы на вопрос 1
@BIG_bu
конвертер преобразует из строки в объект или из объекта в строку.
Сама аннотация сообщает приложению что этот класс[OtdelConverter] будет конвертером для этого класса(модели) [Otdel].
@FacesConverter(forClass = Otdel.class)
public class OtdelConverter implements Converter { // }

или будет конвертером с именем:
@FacesConverter(value = "otdelConverter")

@Override
 public Object getAsObject(FacesContext context, UIComponent component, String value) {
// получаем из базы объект  по входящей строке value ( к примеру по id )
    return otdel; //возвращаем объект отдел
}


@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
  //если входящий объект является "отделом" то 
  return ((Otdel) value).getId().toString(); // или что там надо ( name )
}


пример что может получиться в jsf:
получим из url id отдела и отдадим в контроллер demandBean объект Otdel ( class demandBean { private Otdel otdel; } public Otdel getOtdel/setOtdel)
<f:metadata>
    <f:viewParam name="otdel" value="#{demandBean.otdel}"
                 <!-- если указано имя для @FacesConverter(value= name), то -->
                  converter="otdelConverter" 
                 <!-- иначе можно не указывать конвертер, если он есть - автоматически применится
 converterMessage="#{bundle.badRequest}.#{bundle.unknownOtdel}"
                 />
</f:metadata>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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