【问题标题】:ADF af:inputFile does not trigger ValueChangeEvent with valueChangeListenerADF af:inputFile 不使用 valueChangeListener 触发 ValueChangeEvent
【发布时间】:2016-03-16 10:07:39
【问题描述】:

我尝试将 RichInputFile 与 viewScopeBean 绑定失败。

这是我的代码:

jsff:

<af:panelGroupLayout id="pgl1" layout="horizontal">
      <af:inputFile label="Upload File" id="if1"
                    binding="#{viewScope.userBean.inputFile}"
                    valueChangeListener="#{viewScope.userBean.onFileUploadValueChangeListener}"
                    autoSubmit="true"/>
      <af:spacer width="10" height="10" id="s7"/>
      <af:commandButton text="Upload" id="cb1"
                        disabled="#{viewScope.userBean.inputFile.value == null ? true : false}"
                        partialTriggers="if1"
                        actionListener="#{viewScope.userBean.onUploadFile}"/>
  </af:panelGroupLayout>

豆子:

public class UserBean{
private RichInputFile inputFile;
private UploadedFile file;
private String fileContent;
private String fileName;
private InputStream inputstream;

public UserBean() {
    super();
}

public void onFileUploadValueChangeListener(ValueChangeEvent valueChangeEvent) {
    resetValue();
    file = (UploadedFile)valueChangeEvent.getNewValue();
    try {
        inputstream = file.getInputStream();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

public void onUploadFile(ActionEvent actionEvent) {
    if (file != null && inputstream != null) {
        fileName = file.getFilename();
        StringWriter writer = new StringWriter();

    }
    if (inputFile != null) {
        inputFile.resetValue();
        inputFile.setValid(true);
    }
}

public void resetValue() {
    if (fileName != null)
        fileName = null;
    if (fileContent != null)
        fileContent = null;
    if (inputstream != null)
        inputstream = null;
}

public void setInputFile(RichInputFile inputFile) {
    this.inputFile = inputFile;
}

public RichInputFile getInputFile() {
    return inputFile;
}

public void setFile(UploadedFile file) {
    this.file = file;
}

public UploadedFile getFile() {
    return file;
}

public String getFileContent() {
    return fileContent;
}

public String getFileName() {
    return fileName;
}
}

当我在上传文件元素上选择一个文件时,该文件被选中,但不会触发 ValueChangeEvent 并且不会调用 onFileUploadValueChangeListener。 PPR 发生并且 RichInputFile inputFile 值仍然为空,在屏幕上显示“未选择文件”。 (绑定成功)

在 af:inputFile 上触发 valueChangeEvent 我应该更正什么?

【问题讨论】:

    标签: jsf oracle-adf


    【解决方案1】:

    我找到了答案。

    要触发 af:inputFile valueChangeEvent,必须用 af:form usesUpload="true" 标签包围它:

    <af:panelGroupLayout id="pgl1" layout="horizontal">
     <af:form usesUpload="true" id="f1">
      <af:inputFile label="Upload File" id="if1"
                    binding="#{viewScope.userBean.inputFile}"
                    valueChangeListener="#{viewScope.userBean.onFileUploadValueChangeListener}"
                    autoSubmit="true"/>
      <af:spacer width="10" height="10" id="s7"/>
      <af:commandButton text="Upload" id="cb1"
                        disabled="#{viewScope.userBean.inputFile.value == null ? true : false}"
                        partialTriggers="if1"
                        actionListener="#{viewScope.userBean.onUploadFile}"/>
      </af:form>
    </af:panelGroupLayout>
    

    【讨论】:

    • 如果我们在任务流区域上有一个表单并且使用Upload="true" 它也可以工作吗??
    【解决方案2】:

    如果我们在任务流区域上有一个表单,并且 usesUpload="true" 它也可以工作吗??

    是的。

    如果您在任务流区域上有一个表单,您应该找到并将usesUpload="true" 添加到该表单。它将添加到 html:enctype="multipart/form-data" 允许您上传文件,并且 valueChangeListener 将被捕获。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-01
      • 2023-03-30
      • 2021-05-28
      • 1970-01-01
      • 2014-04-21
      • 2013-04-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多