Primefaces:InputText字段VALUES在FileUpload之后不更新

时间:2017-08-10 10:24:25

标签: java jsf file-upload primefaces

[短文解释] :我在文件上传后更新某些inputText值时遇到问题。如果在上传之前已填写任何其他inputText元素,则无效。

[LONG VERSION] :我需要帮助了解上传更改inputText字段值的文件(在managedBean中)之后的原因inputText字段在元素更新后假设它们的新值。

该页面由一个Form组成,包含两个片段:

  • 第一个,有3个inputText字段 - inputText_A inputText_B inputText_C ;
  • 第二个只包含 FileUpload 元素。上传的文件包含用于填充上述inputText字段的值;

我找到了什么:

  1. FileUpload成功更改了更新托管变量值(上传文件后触发了category.setName()和category.setValue())。
  2. IF 我上传文件之前我在inputText_A中输入任何内容,一切按预期工作 - inputText_B和inputText_C值已更新
  3. IF 我在inputText_A中输入任何内容然后上传文件,然后的inputText_B和inputText_C值不会更新。
  4. 在任何一种情况下update="fileUploadField inputTextFields"都有效(调用getter并在文件上传后禁用字段)
  5. 注意: 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

1 个答案:

答案 0 :(得分:0)

更新:

问题仍然存在,但我在form之后,fragment,2 inputHidden个字段后面创建了同一个value="#{uploaded.category.Name}"inputHidden值会使用上传文件的值进行更新(因为它应该也会出现在inputText字段中)。

知道为什么它在inputHidden但不在inputText字段中工作?

由于