【问题标题】:How do I reset inputFile control in ADF form?如何在 ADF 表单中重置 inputFile 控件?
【发布时间】:2014-12-15 03:18:21
【问题描述】:

除了一个奇怪的缓存问题外,我的 ADF 表单工作正常。我有一个不使用数据库的 ADF 表单。它有一个输入文件字段,用户可以选择电子表格。当他们单击“处理文件”按钮时,它会读取电子表格,进行一些数据操作并写入固定文件。当他们点击处理文件按钮时,包含文件名的文本框基本上变成了一个没有显示框的标签,它显示了他们上传的文件的名称。当我关闭浏览器并重新打开它时,页面会返回,最后选择的文件仍显示在标签中。我还注意到,在程序开始时初始化为零的全局变量(在类内)的值从它在第一次测试结束时的最后一个值开始。在浏览器中多次刷新页面并没有重置页面。为什么会这样?我认为如果再次打开页面时关闭浏览器,它应该重新开始。我通过在程序中进一步设置为零来解决全局变量的问题,但我无法将文件名值设置为 null。似乎在单击按钮之前它不会生效。我应该做一些刷新吗?我尝试使用 Java 刷新整个页面,但这似乎不起作用。

我还应该提到我使用的是 Internet Explorer 浏览器,当我在之前没有调出页面的其他浏览器 Chrome 中尝试它时,它仍然选择了文件。似乎只有在我重新部署应用程序时才会重新开始。

我正在使用 jDeveloper 11.1.1.4。 (也使用 11.1.1.6 尝试过)Weblogic 服务器是 10.3.6。我可以告诉你,我检查了 weblogic-application.xml 文件中的会话选项卡。唯一检查的是 Enable SessionTracking 和 Enable URL Rewriting for Session Tracking。内存中的会话是无限的。在 Cookies 下,选中启用 cookie 和启用 cookie 的 HTTP 代理缓存。在 Cookie 生命周期下,选择了 Cookies never expire。不过,我没有设置任何 cookie,除非这是在幕后做某事。持久存储设置为内存。

其他都是空白的。我尝试取消选中 Enable Session Tracking 和 Enable URL Rewriting and re-deploying,但页面只是挂起,根本无法加载。

所以,这就是我所在的位置。我一直在尝试寻找一种方法来重置 inputFile 对象,但到目前为止还没有运气。我是 ADF 和 Java 的新手,所以请考虑到这一点提出任何建议,我可能需要更多细节。谢谢。

【问题讨论】:

    标签: java jdeveloper oracle-adf


    【解决方案1】:

    假设您没有将 inputFile 组件的 value 属性显式绑定到托管 bean 属性,您只需在组件实例上调用 resetValue()。

    1. 在 request 或 backingBeanScope 中创建托管 bean
    2. 使用 af:inputFile 组件“绑定”属性创建对此 bean 的引用(JSF 组件引用)
    3. 有一个命令按钮或事件您可以监听以访问组件引用并在其上调用 resetValue()

    以上内容使其工作。现在,让我们完善一下:

    在 JSF 开发人员中,不推荐使用支持 bean 和组件绑定,而是首选动态组件查找。所以你可以跳过第 3 步,直接使用 FacesContext.getCurrentInstance().getViewRoot().findComponent('id_of_inputFileComp');获取 RichInputFile 实例的句柄。这种方法的棘手之处在于您需要注意命名容器。

    弗兰克

    【讨论】:

      【解决方案2】:

      你可以在inputFile的valueChageListener(ValueChangeEvent vce)中使用下面这行:

      oracle.adf.view.rich.util.ResetUtils
      ResetUtils.reset(vce.getComponent())
      

      Jdeveloper 12.1.3 版

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-12-18
        • 1970-01-01
        • 1970-01-01
        • 2018-04-08
        • 2014-05-13
        • 1970-01-01
        • 2018-11-09
        相关资源
        最近更新 更多