Передача значения tabface activeIndex в управляемый компонент виджета

У меня есть tabMenu, использующее пункты меню, каждый из пунктов меню имеет параметр "i", который связан с activeIndex, чтобы указать, какую страницу загружать при нажатии на вкладку.

Проблема, с которой я столкнулся, заключается в том, что мне нужно получить значение этого параметра i для вызова другого виджета, который выполняет действие / обработку. Можно ли как-нибудь получить значение этого параметра i и передать его в управляемый компонент виджета (виджет содержит командную кнопку, которая должна вызывать метод в управляемом компоненте виджета и выполнять некоторую обработку в зависимости от выбранного меню).

Виджет работает из tabMenu, но все еще находится на той же странице, что и меню вкладок. Есть ли способ сделать это?

TabMenu выглядит примерно так:

<p:tabMenu activeIndex="#{param.i}">
        <p:menuitem value="AAA" outcome="/ABC/DEF/123.xhtml">
            <f:param name="i" value="0" />
        </p:menuitem>... continued similar menuitem for 3 times with values for i 0-3
</p:tabMenu>

Мой виджет содержит командную кнопку, которая выглядит следующим образом:

<h:commandButton outcome="widget" action="#{mbean.callWidgetMethod}" >
</h:commandButton>

Может кто-нибудь, пожалуйста, направлять меня? Заранее спасибо.

1 ответ

Решение

Хорошо, я нашел ответ

В xhtml:

<h:commandButton outcome="widget" action="#{bean.callWidgetMethod}" >
        <f:param name="i" value="#{param['i']}" />
</h:commandButton>

В управляемом бобе:

Map<String,String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();

String param = params.get("i");

System.out.println("i = "+param);
Другие вопросы по тегам