конвертер преобразует из строки в объект или из объекта в строку.
Сама аннотация сообщает приложению что этот класс[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>