快速业务通道

JSF 1.2入门,第1部分 构建基本应用程序 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
ultPanel。

清单 31 演示 CalculateController 的 add() 方法如何使用这种技术:

清单 31. CalculateController 的 add() 方法,关闭 resultsPanel

public String add() {   ...   try {     calculator.add();     resultsPanel.setRendered(true);     ...   } catch (Exception ex) {     ...     resultsPanel.setRendered(false);   }   return null; }

在清单 31 中,如果对 calculator.add 方法的调用成功,CalculateController.add 方法会调用 resultsPanel.setRendered(true),这会打开结果面板。如果调用失败,那么 CalculateController.add 调用 resultsPanel.setRendered(false),这个面板不再显示。

现在稍微停一下。请注意:因为 JSF 是一个组件模型,而且组件是有状态的,所以组件会记住它们的 状态。不需要像前面的 Calculator 示例那样包含逻辑。告诉组件不要显示其本身,它就不会再显示了。 如果告诉组件禁用其本身,那么只要视图是活动的,每次装载视图时这个组件都会被禁用。与 Model 2 框架相比,JSF 更接近传统的 GUI 应用程序。需要编写的代码更少,就可以更快地开发 Web 应用程序。 JSF 使Web 应用程序 真正体现了应用程序 的思想。

CalculatorController 处理消息

JSF 提供一种向用户显示状态消息的机制。CalculateController 使用 FacesContext 将消息添加到 FacesContext 中,这样就可以用 <h:messages> 标记向用户显示这些消息。

JSF 在 ThreadLocal 变量中存储一个 FacesContext,可以通过调用 FacesContext.getCurrentInstance() 方法访问它。add() 方法使用当前的 FacesContext 添加消息,这 些消息可供当前请求使用,见清单 32:

清单 32. CalculateController 的 add() 方法添加 JSF 消息

public String add() {   FacesContext facesContext = FacesContext.getCurrentInstance();   try {     calculator.add();     facesContext.addMessage(null, new FacesMessage(        FacesMessage.SEVERITY_INFO, "Added successfully", null));     ...   } catch (Exception ex) {     facesContext.addMessage(null,        new FacesMessage(FacesMessage.SEVERITY_ERROR, ex.getMessage(), null));     //Log the exception as well.     ...   }   return null; }

在清单 32 中,如果添加操作成功,就在 facesContext 中添加一个严重性级别为 INFO 的 FacesMessage;如果添加操作抛出异常,就添加一个严重性级别为 ERROR 的 FacesMessage。

用 <h:messages> 标记向用户显示消息,见清单 33:

清单 33. 向最终用户显示错误和状态消息

<h:messages infoClass="infoClass" errorClass="errorClass"        layout="table" globalOnly="true"/>

JSF 1.2入门,第1部分 构建基本应用程序(17)

时间:2011-08-09 IBM Richard Hightower

如果将 globalOnly 属性设置为 true,就只显示不与特定组件连接的消息,比如在清单 32 中添加的 消息。注意,状态消息和错误消息使用不同的样式。

CalculatorController 纠正 “被零除” 异常

因为我们正在使用一个组件模型,所以可以根据显示逻辑修改组件的值并进行初始化。当新的除法方 法抛出 “被零除” 异常时,可以通过将 secondNumberInput 值设置为 1 来恢复。

首先,需要将 secondNumberInput 绑定到 CalculatorController 类,见清单 34:

清单 34. 绑定输入组件:binding="#{calculatorController.resultsPanel}"

<h:inputText id="secondNumber" labe

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号