Проблема JSF o: tabbedPane с изменением SelectedIndex

я работаю с JSF 2.0 и OpenFaces <o:tabbedPane>

У меня проблемы с изменением вкладок. У меня есть индекс с четырьмя страницами jsf.

нравится

<o:tabbedPane  loadingMode="client" tabGapWidth="3"  id="pestana"
                    tabClass="tab_form" rolloverTabClass="tab_form2" selectedTabClass="tab_form3"
                    tabAlignment="bottomOrRight" 
                    style="width:100%;" binding="#{GeneralBean.panelTabs}">
      <o:subPanel caption="1" styleClass="pestanas">
        <ui:include src="/datosDeLaCotizacion.jsf"/>

      </o:subPanel>
      <o:subPanel caption="2" styleClass="pestanas" disabled="true">
        <ui:include src="/datosDelProducto.jsf"/>    

      </o:subPanel>
      <o:subPanel caption="3" styleClass="pestanas" disabled="true">
          <ui:include src="/coberturas.jsf"/>

      </o:subPanel>

      <o:subPanel caption="4" styleClass="pestanas" disabled="true">
        <ui:include src="/confirmacion.jsf"/>

      </o:subPanel>
    </o:tabbedPane>

внутри страниц jsf.. у меня есть формы с их <h:commandButton> вот так

<h:commandButton value="Continuar" id="botonContinuar"
                             actionListener="#{GeneralBean.continuarCotizacionPaso1}"
                             action='Forms!form.Refresh'>
            </h:commandButton> 

когда он переходит к actionListener на Bean, первый раз работает нормально... и меняет <o:tabbedPane> на второй <o:subPanel>, но! когда я использую <h:commandButton> второго <o:subPanel>, он не работает... не достигает actionListener на Bean...

Пожалуйста, помогите мне, если вы знаете, что я делаю неправильно... Спасибо!


person graven    schedule 16.12.2011    source источник


Ответы (1)


Во-первых, обратите внимание, что <o:tabbedPane> следует размещать внутри формы (и я предполагаю, что в вашем случае он находится внутри формы). Во-вторых, вы упоминаете, что у вас есть формы с кнопками внутри страниц JSF. Это те страницы, которые включены в <o:subPanel> вашей панели вкладок?

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

person Dmitry Pikhulya    schedule 17.12.2011
comment
Привет, Дмитрий.. спасибо, я удалил все внутренние формы, как вы сказали.. но проблема не устранена.. у меня есть ‹h:commandButton› внутри каждой ‹o:subPanel›, первая работает... а остальные нет доберитесь до боба... просто обновите страницу... проблема с несколькими отправками? - person graven; 19.12.2011
comment
Рассматривали ли вы возможную ошибку проверки на этих страницах? Добавьте ‹h:messages› где-нибудь за пределами ‹o:tabbedPane›, чтобы увидеть, есть ли ошибки... - person Dmitry Pikhulya; 19.12.2011
comment
Привет спасибо! я использовал inmediate = true для commandButton, и это работает. Я пробовал раньше с вложенными формами и ничего... большое спасибо! Вы знаете, есть ли способ перейти к компоненту с помощью кнопки без действия отправки ... только ajax ... а затем перейти на другую панель? потому что у меня есть одна форма, разделенная на 4 страницы... и мне нужно сохранить эту информацию в полях ввода, пока пользователь проходит через четыре подпанели, и когда commandButton переходит к компоненту и изменяет подпанель, некоторая информация теряется.. Спасибо ! - person graven; 20.12.2011
comment
Я не уверен в правилах stackoverflow, вероятно, это был другой вопрос, поскольку это другая проблема... В любом случае, что вы имеете в виду, говоря, что нужно перейти к bean-компоненту... используя Ajax? Нужно ли что-то перезагружать с помощью Ajax, только что отправленное или что-то еще? В любом случае, должна быть возможность использовать обычные возможности Ajax, такие как атрибуты рендеринга/выполнения в ‹o:commandButton›, или вы можете использовать ‹f:ajax›/‹o:ajax› на существующей ‹h:commandButton› для реализации оба упомянутых случая... - person Dmitry Pikhulya; 20.12.2011