借助 Ajax 自动保存 JSF 表单: 第 3 部分:保存 JSF 表单中的用户输入
2009-11-10 00:00:00 来源:WEB开发网如果使用 submitRestoreRequest() 发送恢复请求或者用户单击 Submit 按钮,服务器将收到一个 POST 请求并且 isRestorable() 将返回 false,如 清单 11所示:
清单 11. 发出 GET 请求后生成的 JavaScript 代码function isRestorable() {
return "POST".toUpperCase() == "GET"
&& true;
}
了解如何处理恢复请求
本节将解释 immediate 属性的作用以及如何使用示例应用程序的 ViewRestorer 类的 restoreCurrentView() 方法的 renderResponse() 调用。
使用 JSF 组件的 immediate 属性
前面一节中使用的 <h:inputHidden> 组件将其 immediate 属性设置为 true,因此可以在 JSF 请求处理生命周期的早期调用侦听器方法。更准确地说,调用将发生在 Apply Request Values 阶段。也可针对一些命令按钮将 immediate 属性设为 true,这些命令按钮的操作方法应该在 Apply Request Values 阶段调用而不是等到 Invoke Application 阶段调用。如果需要向 JSF 表单添加一个 Restore 按钮,您可以使用一个 <h:commandButton> 标记,其 immediate 属性为 true(请参见 清单 12):
清单 12. 恢复表单数据的命令按钮<h:form id="supportForm">
...
<h:commandButton id="restoreButton" value="Restore"
actionListener="#{viewRestorer.actionListener}"
immediate="true"/>
...
</h:form>
最后,将在 Apply Request Values 阶段调用 ViewRestorer bean 的 valueChangeListener() 和 actionListener() 方法,因为 SupportForm.jsp 页面的 restoreTrigger 和 restoreButton 组件将 immediate 属性设置为 true。
更多精彩
赞助商链接