簡體   English   中英

p:inputText(慢速)getter調用清除用戶值

[英]p:inputText (slow) getter call clears user value

做過一些搜索(在這里和Google)-找不到任何相關的內容,希望有人知道。

當我們的應用程序運行異常緩慢時,我們看到了一個錯誤,其中<p:inputText id="searchNameInput" .../> (位於<p:overlayPanel> )的用戶輸入值在清除之前用戶提交。 據我所知,由於應用程序的速度慢,用戶能夠在初始getter調用之前輸入一個值。 然后,此getter調用返回一個空的String,有效清除用戶輸入的值。

不確定如何解決-可以接受任何想法。 下面的代碼段。

createSavedSearchBeanDialogue.xhtml

        <p:outputPanel styleClass="save-search-panel-option" autoUpdate="true">
            <p:inputText id="searchNameInput" 
                         value="#{existingSavedSearchBean.searchNameToDisplay}"
                         styleClass="#{existingSavedSearchBean.inputTextStyleClass}"
                         widgetVar="wvsearchNameInput" size="55"
                         validatorMessage="#{msgs['search_results.operation.msg.error.search_name_empty']}"
                         disabled="#{existingSavedSearchBean.resavingExecutedSavedSearch 
                                     and !existingSavedSearchBean.saveAsACopy}">
                <f:validateRegex pattern="^(?=\s*\S).*$" />
            </p:inputText>
        </p:outputPanel>

        <p:outputPanel styleClass="save-as-copy-panel">
            <p:selectBooleanCheckbox id="saveAsACopyCheckbox"
                                     widgetVar="wvSaveAsACopyCheckbox"
                                     value="#{existingSavedSearchBean.saveAsACopy}"
                                     rendered="#{existingSavedSearchBean.resavingExecutedSavedSearch}"
                                     styleClass="col-settings-panel-radio"
                                     process="@this"
                                     update="searchNameInput saveCurrentSearchButton" 
                                     disabled="#{existingSavedSearchBean.resavingExecutedSavedSearch 
                                                and !existingSavedSearchBean.currentSearchIsEditable}" >
                <p:ajax listener="#{existingSavedSearchBean.saveAsACopyCheckboxChanged}" 
                        update="searchNameInput saveCurrentSearchButton"/>
            </p:selectBooleanCheckbox>

            <h:outputLabel for="saveAsACopyCheckbox"
                           value="#{msgs['search_results.save_search_panel.checkbox.save_as.label']}"
                           rendered="#{existingSavedSearchBean.resavingExecutedSavedSearch}" />
            <h:outputLabel for="saveAsACopyCheckbox" styleClass="saved-search-overwritten-info"
                           value="#{msgs['search_results.save_search_panel.checkbox.save_as.not_overwritable.label']}"
                           rendered="#{existingSavedSearchBean.resavingExecutedSavedSearch and 
                                    !existingSavedSearchBean.currentSearchIsEditable}" />
        </p:outputPanel>

        <p:outputPanel styleClass="save-as-copy-panel">                     
            <p:selectBooleanCheckbox id="updatedSearchCriteriaCheckbox"
                                     widgetVar="wvUpdatedSearchCriteriaCheckbox"
                                     value="#{existingSavedSearchBean.useUpdatedSearchCriteria}"
                                     styleClass="col-settings-panel-radio"
                                     update="saveCurrentSearchButton"
                                     process="@this"
                                     rendered="#{existingSavedSearchBean.resavingExecutedSavedSearch 
                                                and existingSavedSearchBean.searchCriteriaHasChanged}" >
                <p:ajax update="saveCurrentSearchButton updatedColumnSettingsCheckbox"/>
            </p:selectBooleanCheckbox>
            <h:outputLabel for="updatedSearchCriteriaCheckbox"
                           value="#{msgs['search_results.save_search_panel.checkbox.updated_criteria.label']}"
                           rendered="#{existingSavedSearchBean.resavingExecutedSavedSearch 
                                     and existingSavedSearchBean.searchCriteriaHasChanged}" />
        </p:outputPanel>

        <p:outputPanel styleClass="save-as-copy-panel">
            <p:selectBooleanCheckbox id="updatedColumnSettingsCheckbox"
                                     widgetVar="wvUpdatedColumnSettingsCheckbox"
                                     value="#{existingSavedSearchBean.useUpdatedColumnSettings}"
                                     styleClass="col-settings-panel-radio"
                                     update="saveCurrentSearchButton"
                                     process="@this"
                                     rendered="#{existingSavedSearchBean.resavingExecutedSavedSearch 
                                                and existingSavedSearchBean.columnSettingsHaveChanged}" >
                <p:ajax update="saveCurrentSearchButton updatedSearchCriteriaCheckbox"/>
            </p:selectBooleanCheckbox>
            <h:outputLabel for="updatedColumnSettingsCheckbox"
                           value="#{msgs['search_results.save_search_panel.checkbox.updated_column_settings.label']}"
                           rendered="#{existingSavedSearchBean.resavingExecutedSavedSearch 
                                      and existingSavedSearchBean.columnSettingsHaveChanged}" />
        </p:outputPanel>                
    </p:panelGrid>

我認為我終於遇到了一個解決方案-認為我會發布該解決方案,以防有人遇到類似問題。 在封閉的<p:outputPanel>上設置autoUpdate="false" (而不是“ true”)似乎可以消除有害的getter調用。

<p:outputPanel styleClass="save-search-panel-option" autoUpdate="false">
            <p:inputText id="searchNameInput" 
                         value="#{existingSavedSearchBean.searchNameToDisplay}"
                         styleClass="#{existingSavedSearchBean.inputTextStyleClass}"
                         widgetVar="wvsearchNameInput" size="55"
                         validatorMessage="#{msgs['search_results.operation.msg.error.search_name_empty']}"
                         disabled="#{existingSavedSearchBean.resavingExecutedSavedSearch 
                                     and !existingSavedSearchBean.saveAsACopy}">
                <f:validateRegex pattern="^(?=\s*\S).*$" />
            </p:inputText>
        </p:outputPanel>

暫無
暫無

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

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