2016-01-20 6 views
0

Учитывая: а primefaces 5.3 приложения со следующим XHTMLCommandButton ActionListener не вызывается, когда отключено свойство является ложным

<h:form id="form" enctype="multipart/form-data"> 
     <p:messages id="serversMessages" showDetail="true" autoUpdate="true" closable="true" /> 

     <p:selectOneListbox value="#{servers.model.selectedServer}" style="min-width:300px"> 
      <p:ajax event="change" listener="#{servers.onServerSelected}" update=":form" /> 
      <f:selectItems value="#{servers.model.servers}" var="srv" itemValue="#{srv.serverInfoId}" itemLabel="#{srv.name}" /> 
     </p:selectOneListbox> 

     <p:column><p:inputText value="#{servers.model.edit.name}" /></p:column> 
     <p:commandButton id="newServerBtn" actionListener="#{servers.onNewServerClicked}" value="New" update=":form"></p:commandButton> 
     <p:commandButton id="updServerBtn" disabled="#{empty servers.model.selectedServer}" actionListener="#{servers.onSaveClicked}" value="Save" update=":form"></p:commandButton> 
     <p:commandButton id="tmpServerBtn" actionListener="#{servers.onTempClicked}" value="Temp2" update=":form"></p:commandButton> 

    </h:form> 

Когда: Я нажимаю на updServerBtn (он включен, когда элемент в списке имеет был выбран)

Ожидание: Будет вызван метод бэк-компонента.

Но на самом деле: Метод бэк-компонента не называется.

Наблюдения:

  1. Если удалить отключенное свойство подкладочный боб называется.

  2. tmpServerBtn вызывает метод бэкбона.

  3. Когда я нажимаю на updServerBtn, XHR происходит с ответом 200.

Анализ:

Казалось бы, что Primefaces решает, что не стоит вызывать метод подложки боба.

Похожие вопросы

Перед отправкой на мой вопрос, я нашел этот пост здесь:

commandButton/commandLink/ajax action/listener method not invoked or input value not updated

Когда я удалить отключенный атрибут updServerBtn, метод подложки боба делает get invoked. Это говорит о том, что возможные причины проблем в вышеприведенном сообщении, вероятно, не применяются.

+0

Когда я переключаю бэк-файл в SessionScoped, вызывается метод. –

+0

Когда область видимости ViewScoped или RequestScoped, метод НЕ вызывается. –

+0

Я добавил запись в конструктор и метод readResolve. Никаких признаков, которых это называют. –

ответ

-1

Я думаю, ваша проблема в том, что при выборе сервера из selectOneListBox ваша кнопка не обновляется и, следовательно, отключенный атрибут не пересчитывается.

Попробуйте изменить атрибут update на <p:ajax> изменить событие. Вместо обновления :form попробуйте обновить @form.

+0

Нет, кнопка была доступна. На первом месте отключена кнопка. Если вы не можете быть уверены или не можете самостоятельно протестировать или воспроизвести проблему, лучше опубликуйте комментарий. – BalusC

+0

Вы правы @BalusC – malaguna

Смежные вопросы