分享
 
 
 

使用 Translator 模式构建更好的网站(3)

王朝厨房·作者佚名  2007-01-02
窄屏简体版  字體: |||超大  

在此 JSP 文件中,要注意的第一点是它有一个 page 指令标记。这是因为它需要继承一个超类,并需要导入两个类。JSP 文件继承了超类 com.ibm.igs.ispkcm.translator.JspBase,因为 JspBase 包括一些很好的实用函数,它使得 JSP 文件可包含更少的代码。该 JSP 文件所用的主要实用函数是 displayErrors() 和 highLightErrors()。该 page 指令导入 LoanTranslator 和 Hashtable,因为 JSP 文件中引用了这两个类,导入这两个类是为了以后在此 JSP 代码中引用这两个类时不必使用它们完全限定的类名。以下代码显示了 import 语句的一个示例:

<%@ page extends="com.ibm.igs.ispkcm.translator.JspBase"

import="com.ibm.developerworks.translatorpattern.LoanTranslator,

Java.util.Hashtable"%>

JSP 文件中第一行真正的 Java 代码获取 Translator 对象的一个实例,然后获取一个 Hashtable,其中存储着属于 Translator 对象的那个实例的错误。因为 JSP 文件(在编译后)是一个 servlet,所以它是一个无状态的服务对象。Translator 对象将在特定 JSP 文件或 servlet 的不同往返之间维护必要的状态信息。状态信息应仅限于网站访问者输入的值和要向网站访问者显示的任何处理错误。因为 Translator 对象的每个实例都与一个特定的网站访问者相关联,所以 JSP 文件调用 Translator 对象的 getInstance(HttpServletRequest) 方法。由于为该方法传递的是一个 HttpServletRequest 对象,所以该方法将能够检索与该网站访问者的 HttpSession 相关的 Translator 实例。

<%

LoanTranslator ltLoan = LoanTranslator.getInstance(request);

Hashtable htErrors = ltLoan.getErrors();

%>

在此 JSP 文件示例中,网站访问者将在表单的顶部看到所有处理错误。用来显示这些错误消息的 HTML 是使用 <%= displayErrors(htErrors) %> 表达式输出的。displayErrors() 方法是从 JSP 文件的超类 JspBase 中继承而来的。有了 displayErrors(),用于显示错误消息的所有逻辑都被集中在一起,从而简化了维护工作。

下面这段代码模板适用于表单上的每个输入域:

<%= hightLightErrors(ltLoan.BORROWER_LAST_NAME, htErrors) %>Borrower Last Name:

<INPUT name="<%= ltLoan.BORROWER_LAST_NAME %>"

value="<%= ltLoan.getBorrowerLastName() %>">

highLightErrors() 是从 JSP 文件的超类 JspBase 中继承而来的。如果某个输入域有错误,该方法将突出显示该输入域的标签。该方法接收两个参数:String 和Hashtable。该 Hashtable 是其中存储着从 Translator 的实例检索而来的错误的 Translator。String 是正在检查其是否有错误的输入域的名称。如果存在与该域相关的错误,highLightErrors() 就会返回突出显示此输入域的标签的 HTML。

在此代码模板中,须注意的重要一点是:INPUT 标记的 name 属性是由一个表达式设置的,该表达式使用 LoanTranslator 对象的 BORROWER_LAST_NAME 常量。因为在 JSP 文件中引用此域名时使用了一个常量,所以 Translator 对象和 servlet 的调试变得更加容易。使用常量更为容易,因为无论何时开发人员更改此域的名称,他们都会获得一个编译错误,而非运行时错误。查找编译错误要容易得多,因为编译器会立即指出错误,而运行时错误到调试和测试期间才能被发现。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有