Я просто попытался изменить значение поля ввода select. Загрузка страницы выполняется в мою точку останова для метода getter свойства pubcategory. До сих пор хорошо. Изменяя значение, НЕ вызывается метод setter. Я запускаю обработку ajax Richfaces. Я подтверждаю, что все фазы JSF проходят (я также вижу запросы выбора JPA-SQL, где я ожидаю, что оператор обновления для изменения значения - ну, не может быть, если метод setter не запускается). Это мой selectOneMenu кодSetter h: selectOneMenu не вызывается
<h:selectOneMenu id="pubCategoryId" converter="#{pubCategoryConverter}" value="#{pubController.pubCategory}">
<f:selectItems value="#{listPubCategoryController.pubCategories}" var="category" itemLabel="#{category.name}" itemValue="#{category}" />
<a4j:ajax event="change" execute="@this" />
</h:selectOneMenu>
<h:message for="pubCategoryId" style="color:red" />
Мой конвертер вызывается в оба раза. метод getAsString, когда я загружаю страницу и getAsObject, когда запускается действие on-change. Из этого я убеждаюсь, изменение действительно возвращается к серверу. Но - снова - он никогда не запускает метод setter.
@ManagedBean(name = "pubCategoryConverterController")
@FacesConverter(value = "pubCategoryConverter")
//@Named
public class PubCategoryConverter implements Converter {
@Inject
private PubCategoryRepository pubCategoryRepository;
public PubCategoryConverter() {
}
// from page to backing bean
@Override
public Object getAsObject(FacesContext ctx, UIComponent component,
String value) {
PubCategory pubCat = pubCategoryRepository.getPubCategoryById(new Long(
value));
return pubCat;
}
// from backing bean to page
@Override
public String getAsString(FacesContext fc, UIComponent uic, Object o) {
PubCategory pubCat = ((PubCategory) o);
return pubCat.getId().toString();
}
}
Та же история, если я аннотировать конвертер с @Named вместо @ FacesConverter/@ ManagedBean. Любая подсказка или намекает кому-нибудь?
Использование JBoss 7.1.1, 4.3.3 RichFaces, JSF 2.0
вы пытались с помощью '' вместо ' '? –
Daniel
Nope. Пробовал это раньше. Не имеет никакого значения. То же поведение: проходит через все стороны JSF, но НЕ запускает метод setter. (спасибо в любом случае за ваши отзывы) – feder
у вас есть сообщения в журнале сервера, я имею в виду, попробуйте добавить id к этому 'h: message', например:' 'и визуализируйте его с помощью ' –
Daniel