Как определить пользовательские правила навигации для включенного компонента?

Я пытаюсь включить компонент (с ui:include) и установить правило навигации для страницы вызывающего абонента. Включенный компонент имеет форму; при отправке я хочу отобразить сообщение обратной связи (например, рычание) и снова условно отобразить включенную панель.

Каков наилучший способ добиться этого?


person nuno    schedule 20.08.2014    source источник
comment
Подождите, вы говорите, что вам нужно правило навигации для условного повторного рендеринга <ui:include>? Вы говорите так, как будто вы уже используете Ajax и хотели бы остаться на той же странице и обновить только ее часть. Зачем тогда нужны правила навигации?   -  person BalusC    schedule 20.08.2014
comment
Компонент ui:include имеет форму отправки; при отправке action из h:commandButton запускает некоторую бизнес-логику, и в этот момент я хочу отобразить сообщение обратной связи (на уровне страницы) - метод action возвращает success/error для перезагрузки страницы (хотя состояния выбора таблицы теряются) . Ваша точка зрения с Ajax: я не знаю, как через ajax управлять компонентами родительской страницы (вызывающий ui:include)   -  person nuno    schedule 20.08.2014
comment
Хорошо. Я ответил на вопрос прямо, но это не значит, что это лучший подход для всего, что вам действительно нужно. Это будет слишком долгая история. Начните с книги JSF2, в которой рассматриваются концепции ajax.   -  person BalusC    schedule 20.08.2014


Ответы (1)


Вы можете использовать <ui:param>, чтобы позволить вызывающей стороне указать пользовательские параметры для <ui:include>.

<ui:include ...>
    <ui:param name="foo" value="..." />
</ui:include>

Вы можете передать их методу в <h:commandButton> страницы включения.

<h:commandButton ... action="#{bean.submit(foo)}" />
public String submit(String foo) {
    // ...
}
person BalusC    schedule 20.08.2014
comment
Я принимаю этот ответ при условии, что вызывающий компонент передает в качестве параметра список возвращаемых токенов (в результате действий включенного компонента), соответствующим образом отображая ошибки и случаи успеха - я не считаю это элегантным решением, но он получает дело сделано. Спасибо - person nuno; 22.08.2014
comment
Пользовательский тег или составной элемент, такой как <my:blah foo="..." />, действительно более элегантен, чем <ui:include src="blah.xhtml"><ui:param name="foo" value="...">, однако вы специально просили <ui:include>. См. также stackoverflow.com/questions/6822000/ Опять же, как упоминалось в моем предыдущем комментарии, начните с хорошей книги JSF2. Это знание скрыто там. - person BalusC; 22.08.2014
comment
Навигация для этого решения не работает для меня так, как ожидалось (при использовании составного компонента). Я создал здесь еще один вопрос using-managed-bean" title="составной компонент с навигацией с использованием управляемого компонента"> stackoverflow.com/questions/25501810/. Требуются ли дополнительные настройки для правил навигации? - person nuno; 26.08.2014