簡體   English   中英

p:dataTable 未由 PrimeFaces.current().ajax().update 更新

[英]p:dataTable not updated by PrimeFaces.current().ajax().update

我開始使用 JSF 和 PrimeFace 數據表進行開發。 我准備了以下 xhtml 頁面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui">

        <h:head>
        <title>Find Capital of Countries</title>
        </h:head> 
        <h:body> 
            <h:form id="FrmTest">

                        <p:dataTable id="ListSites"  value="#{testing.SiteSearch()}" var="lst" editable="true">

                        <f:facet name="header">
                            List of Sites
                        </f:facet>

                        <p:column>
                            <f:facet name="header">
                                Site Code
                            </f:facet>
                            #{lst.stCode}
                        </p:column>

                        <p:column headerText="Site Description">
                            <h:outputText value="#{lst.stDescription}" />
                        </p:column>

                        <p:column  headerText="is Active">
                            <div style="text-align: center;">
                                <p:selectBooleanCheckbox value="#{lst.stActive}"  />
                            </div>
                        </p:column>

                        <p:column>
                            <f:facet name="header">
                                Site Active
                            </f:facet>
                            <div style="text-align: center;">
                                <h:outputText value= "#{lst.stActive}" />
                            </div>
                        </p:column>

                        <p:column>
                            <f:facet name="header">
                                Modified By
                            </f:facet>
                             #{lst.modifiedBy}
                        </p:column>

                        <p:column>
                            <f:facet name="header">
                                Modification Date
                            </f:facet>
                            #{lst.modifiedDate}
                        </p:column>                 

                        <p:column>
                            <f:facet name="header">
                                Has Error
                            </f:facet>
                            #{lst.hasError}
                        </p:column>     

                        <p:column>
                            <f:facet name="header">
                                Error Description
                            </f:facet>
                            #{lst.errorDescription}
                        </p:column>     

                        <p:column>
                            <f:facet name="header">
                                Row State
                            </f:facet>
                            #{lst.rowState}
                        </p:column>     


                    </p:dataTable>



                <h:outputLabel value="Enter Country Name:"/>
                <h:inputText id="country" binding="#{testing.country}"
                valueChangeListener="#{testing.findCapitalListener}"
                immediate="true"
                onchange="document.getElementById('findcapital').click();" />
                <br/>
                <br/>
                <h:outputLabel value="Capital is: " />
                <h:inputText id="capital" binding="#{testing.capital}" immediate="true"/>
                <br/>
                <br/>
                <h:commandButton  value="Submit" partialSubmit="true" />
                <div style="visibility: hidden" >
                    <h:commandButton id="findcapital" value="findcapital" partialSubmit="true"  immediate="true" />
                </div>

            </h:form>    
        </h:body> 
    </html>

我希望在名為 country 的文本框中輸入以更新名為 ListSites 的數據表。 關聯的偵聽器被調用(system.out.println made)但primeface更新沒有進行。 這是聽眾:

   ```
        public void findCapitalListener(ValueChangeEvent cdl) {
        String country = cdl.getNewValue().toString();
        System.out.println("Country is : " + country);
        StringBuilder capitalCountry = new StringBuilder();
        findCapital(country, capitalCountry);
        capital.setValue(capitalCountry.toString());    
        siteDto = listSiteDto.get(0);
        siteDto.setStDescription(capitalCountry.toString());
        listSiteDto.set(0, siteDto);
        PrimeFaces.current().ajax().update("FrmTest:ListSites");
        //System.out.println("Capital is : " + capital.getValue());
        //System.out.println("New DTO Description : " + siteDto.getStDescription());
        System.out.println("New list Description : " + listSiteDto.get(0).getStDescription());
        }
    ```

問題是由於填充數據表 (SiteSearch()) 的 function 正在從數據庫中檢索數據。 在那個階段,我想在更新數據庫之前刷新頁面顯示。 我用列表吸氣劑替換了 function,現在一切正常。

Primefaces:

[英]Primefaces : <p:ajax inside of DataTable calls method several times after I update the dataTable

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM