Как заставить f: ajax игнорировать недопустимые идентификаторы в атрибуте рендеринга?

#ajax #jsf #jsf-2 #ajax4jsf

#ajax #jsf #jsf-2 #ajax4jsf

Вопрос:

Я создаю компоненты JSF в фоновом режиме. Кроме того, добавлена поддержка ajax с использованием AjaxBehavior.

 AjaxBehavior a4jSupport = (AjaxBehavior) app.createBehavior(AjaxBehavior.BEHAVIOR_ID);
List<String> updateIds = getUpdateIds();
if (updateIds !=null){
    a4jSupport.setRender(updateIds);
    ((UIComponentBase) component).addClientBehavior("change", a4jSupport);
}
 

Идея состоит в том, чтобы добавить повторный рендеринг набора компонентов при изменении значения для определенного входного компонента. Я сталкиваюсь с проблемой, когда какой-либо идентификатор обновления недействителен. Он выдает Javax.faces.Исключение FacesException, в котором упоминается, что конкретный идентификатор недействителен.

Нужно знать, есть ли какой-либо способ игнорировать недопустимые идентификаторы, а не создавать исключения?

Комментарии:

1. Я думаю, что основная цель исключения — перехватить его и обработать неожиданный результат, другими словами, когда вы его поймаете, вы можете его игнорировать.

2. Это основная проблема здесь… Это происходит во время рендеринга пользовательского интерфейса. Я не слишком уверен в том, как перехватить это, поскольку на стороне сервера все выполняется просто отлично. Это исключение возникает только тогда, когда компонент отображается в пользовательском интерфейсе.

3. Просто чтобы добавить к приведенному выше комментарию, я думаю, что это нужно обработать на этапе RenderResponse, но не слишком уверен в том, как правильно с этим справиться.