2017-08-10 71 views
0

[簡短說明]:我在文件上傳後更新inputText值時出現問題。如果在上傳之前填寫了其他inputText元素,則此功能無效。Primefaces:InputText字段值在FileUpload後不更新

[長版]:我需要幫助理解爲什麼上傳改變的inputText字段的值(在managedBean)的文件後,inputText字段不其元素已被更新後,承擔起自己的新值的原因。

頁由表格的,含有2個片段:

  • 的第一一個,有3個的inputText字段 - inputText_AinputText_BinputText_C;
  • 第二個只包含一個FileUpload元素。上傳的文件包含用於填充上述inputText字段的值;

我發現:

  1. FileUpload成功地改變更新managedbeans變量的值(category.setName()和category.setValue()上傳文件後觸發)。
  2. IF我上傳的文件之前我inputText_A輸入任何內容,一切正常 - 在inputText_B和inputText_C值更新
  3. IF我inputText_A輸入任何東西,然後上傳文件,則inputText_B和inputText_C值不是已更新。
  4. 在任何的那些update="fileUploadField inputTextFields"工作(干將被調用,該文件已被上傳後場被禁用)

注意的情況:的inputText_B和_C必須inputTexts,因爲用戶應該被允許手動輸入信息,以防他沒有必要的文件。

fields.xhtml

<p:fieldset id="inputTextFields" toggleable="true" toggleSpeed="150" 
     <p:inputText id="inputText_A" 
      value="#{uploaded.category.serial}" 
      disabled="#{details.disabled()}" 
      required="true" 
      requiredMessage="#{msg['uploaded.category.serial.empty']}" 
      onblur="deactivateCategoryListOrButton(); setChanged()"> 
     </p:inputText> 

     <p:inputTextarea id="inputText_B" 
      value="#{uploaded.category.name}" 
      disabled="#{details.disabled()}" 
      required="true" 
      requiredMessage="#{msg['uploaded.category.name.empty']}" 
      autoResize="false" rows="4" 
      valueChangeListener="#{uploaded.fieldListener}" 
      onblur="deactivateCategoryListOrButton(); setChanged()"> 
     </p:inputTextarea> 

     <p:inputTextarea id="inputText_C" 
      value="#{uploaded.category.value}" 
      disabled="#{details.disabled()}" 
      required="true" 
      requiredMessage="#{msg['uploaded.category.name.empty']}" 
      valueChangeListener="#{uploaded.fieldListener}" 
      onblur="deactivateCategoryListOrButton(); setChanged()"> 
     </p:inputText> 
</p:fieldset> 

uploader.xhtml

<p:fieldset id="fileUploadField" toggleable="true" toggleSpeed="150" 
    <h:panelGroup> 
     <p:fileUpload id="#{details.fileUploadCompIdRule}" 
      fileUploadListener="#{details.handleFileUpload}" 
      mode="advanced" allowTypes="/(\.|\/)(xml)$/" 
      label="#{msg['uploaded.category.button.browse']}" 
      multiple="false" auto="true" 
      update="fileUploadField inputTextFields" 
      disabled="#{details.categoryActive()}" 
      oncomplete="deactivateCategoryListOrButton(); setChanged()" /> 
    </h:panelGroup> 
</p:fieldset> 

提前感謝! RMG

+0

嘗試在輸入字段上使用''。 –

+0

它沒有工作。我需要在上傳後立即在兩個輸入字段中進行更新,並更新值。 – RmGZ

+0

爲什麼你使用大寫的屬性名稱?例如'#{uploaded.category.Serial}',不應該是'#{uploaded.category.serial}'嗎? –

回答

0

UPDATE:

的問題仍然存在,但我已經在form創建,同value="#{uploaded.category.Name}"fragment,2 inputHidden場之後。inputHidden值將更新爲上傳文件的值(因爲它本應發生在inputText字段中)。

任何想法,爲什麼這是在inputHidden而不是在inputText字段工作?

謝謝