【发布时间】:2012-06-08 15:13:06
【问题描述】:
我有一个 ICEfaces Web 应用程序,其中包含一个组件,该组件的属性链接到一个支持 bean 变量。理论上,变量值是通过程序修改的,组件会看到变化并相应地更新其外观/属性。
但是,似乎直到 JSF 周期结束时组件才“注意到”变量的变化(根据我的基本理解,它是 render response phase)。
问题是,我有一个很长的文件复制操作要执行,我希望 inputText 组件显示定期状态更新。但是,由于组件仅在渲染响应阶段更新,因此在 Java 方法执行完成之前它不会显示 任何 输出,并且会同时显示所有累积的更改。
我尝试过使用FacesContext.getCurrentInstance().renderResponse()和其他函数,例如PushRenderer.render(String ID)来强制XmlHttpRequest提前初始化,但无论如何,组件的外观在Java代码执行完成之前不会改变。
想到的一个可能的解决方案是在某个地方有一个不可见的按钮,当长操作的第 1 步完成时,bean 会自动“按下”该按钮,单击它,它会调用第 2 步,依此类推向前。看起来它会起作用,但是当我希望 JSF/ICEfaces 中内置一个更优雅的解决方案时,我不想花时间一起破解这样一个不优雅的解决方案。
是我遗漏了什么,还是求助于丑陋的黑客行为是实现所需行为的唯一方法?
【问题讨论】:
标签: ajax jsf xhtml components icefaces