У меня есть пользовательский конвертер, чтобы выбрать страну в компоненте SelectOneMenu:JSF 2.0 Преобразователь не работает с отдельной Jar-файла
Файл: address.jar
@FacesConverter(value="CountryConverter", forClass=Country.class)
public class CountryConverter implements Converter {
private CountryBean countryBean = CountryBean.getCountryService();
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
return countryBean.find(value);
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if (value != null)
return ((Country)value).getcc_fips();
else
return null;
}
И это XHTML текст:
Файл: корень Project
<h:selectOneMenu id="country" value="#{cc.attrs.addrEntity.country}">
<f:selectItem itemLabel="Please select one..."
noSelectionOption="true" />
<f:selectItems value="#{cc.attrs.addrBean.countries}"
var="model"
itemLabel="#{model.name}"
itemValue="#{model}"
noSelectionValue="“no selection”"/>
<f:converter ConverterId="CountryConverter"/>
</h:selectOneMenu>
У меня есть конвертер в файле «address.jar», и когда я пытаюсь открыть страницу для записи адреса, тогда он отвечает: «Ошибка выражения: объект с именем MyCustomCoverter не найден».. Даже когда я копирую конвертер в проект, где находятся файлы xhtml, он работает нормально. Что я могу сделать, чтобы решить эту проблему?
Почему это не работает из разделенного файла jar?
Спасибо.
Отлично, он работает очень хорошо. Благодаря!. –
Добро пожаловать. – BalusC
Еще одна важная деталь: JAR должен находиться в ** lib-каталоге ** WAR (веб-приложение). Если у вас есть EAR с WAR в нем, а JAR с конвертером находится только в EAR, но не в lib WAR, JSF не найдет конвертер. См. Также [этот ответ] (http://stackoverflow.com/questions/2987266/why-doesnt-jsf-2-0-ri-mojarra-scan-my-class-annotations) для еще одного подробного описания проблемы. –