Выполнен Ajax-вызов, но соответствующие поля обновляются только после обновления страницы - PullRequest
1 голос
/ 20 мая 2011

Я попытался сделать вызов ajax для selectOneMenu, используя JSF 2 и простые символы 2.2.Вызывается метод actionListener.Но столбцы, указанные в атрибуте update, не обновляются.Когда я направляю страницу, я могу найти обновленные значения.Пожалуйста, помогите мне в этом.

Код, который я использовал, был

    <h:form id="mainForm" prependId="false">
<p>
<p:tabView>
        <p:tab title="Receipt">

    <p:dataTable id="table1" var="recepit" rowIndexVar="rowIndex"   value="#{ReceiptDetailsBean.iterativeList}" scrollable="true"  height="120px" styleClass="leftTable">

            <p:column style="background-color: #EFF2F9">
                <f:facet name="header">
                    <h:outputText value="SL NO" />
            </f:facet>
                    <h:outputText value="#{rowIndex+1}" />

            </p:column>

            <p:column >
                <f:facet name="header">
                    <h:outputText value="Buss." />
                </f:facet>

                        <h:selectOneMenu id="selectOneCb4" value="#{ReceiptDetailsBean.bussCode}" >
                            <f:selectItem itemLabel="V_BUSS_CODE" itemValue=""/>
                            <f:selectItems value="#{ReceiptDetailsBean.rdetails}" var="model" itemLabel="#{model.buss}" itemValue="#{model.buss}"/>
                             <p:ajax update="table1:#{rowIndex}:receiptCode, table1:#{rowIndex}:referenceType"  actionListener="#{ReceiptDetailsBean.obtainReceiptDatabasedOnBussCode}" event="change"/>  
                        </h:selectOneMenu>

            </p:column>

            <p:column>
                <f:facet name="header">
                    <h:outputText value="Receipt Code" />
                </f:facet>
                    <h:inputText value="#{ReceiptDetailsBean.receiptCode}" id="receiptCode" style="font-family: verdana;font-size: 10px;width:80px;height:15px" onkeypress="return showForhotKey(event,'#{rowIndex}');"/>

            </p:column>

            <p:column>
                <f:facet name="header">
                    <h:outputText value="Ref Type" />
                </f:facet>
                    <h:inputText value="#{ReceiptDetailsBean.receiptType}" id="referenceType" style="font-family: verdana;font-size: 10px;width:80px;height:15px"  onkeypress="return showForhotKey(event,'#{rowIndex}');"/>

            </p:column>
    </p:dataTable>  
        </p:tab>

        <p:tab title="Print">

        </p:tab>

Ответы [ 2 ]

1 голос
/ 20 мая 2011

Частичные обновления dataTables и ajax-обновления dataTables, инициированные компонентом в dataTable, не работают в версии 2.2 Primefaces.Это известная ошибка, которая, возможно, была устранена в версии 3.

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

1 голос
/ 20 мая 2011

Попробуйте f:ajax вместо p:ajax и выполните рендеринг всей формы, чтобы приблизиться к источнику проблемы:

<h:selectOneMenu id="selectOneCb4" value="#{ReceiptDetailsBean.bussCode}" >
   <f:selectItem itemLabel="V_BUSS_CODE" itemValue=""/>
   <f:selectItems value="#{ReceiptDetailsBean.rdetails}" var="model" 
                  itemLabel="#{model.buss}" itemValue="#{model.buss}"/>
   <f:ajax render="@form"  
           listener="#{ReceiptDetailsBean.obtainReceiptDatabasedOnBussCode}"/>  
</h:selectOneMenu>

Это должно работать, как указано в моем ответе на ваш предыдущий вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...