2015-10-05 46 views
0

做了一些搜索(这里和谷歌) - 找不到任何相关的东西,希望有人有一个想法。p:inputText(慢)getter call清除用户值

虽然我们的应用程序运行异常缓慢,但我们发现一个错误,用户输入值<p:inputText id="searchNameInput" .../>(位于<p:overlayPanel>之内)在用户提交之前自行清除。从我所知道的情况来看,由于应用程序缓慢,用户可以在初始getter调用之前输入一个值。此getter调用然后返回一个空字符串,有效地清除用户输入的值。

不知道如何解决这个问题 - 打开任何想法。 下面的代码片段。

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> 

回答

0

我想我终于跑过的解决方案 - 想通的情况下,任何人都跑进了类似的问题,我会发布它。 在封闭的<p:outputPanel>上设置autoUpdate="false"(而不是“真”)似乎消除了违规的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>