分享
 
 
 

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

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

对于要在 JSP 文件中显示的每个业务对象值,Translator 都提供了一个 getter 方法。这些 getter 方法由 JSP 文件调用。必须在 JSP 文件中显示的每个业务对象属性都有一个 getter 方法。getter 方法总是返回一个 String。返回的 String 值已被预先格式化,以便直接在 JSP 文件中显示。预先格式化 String 是为了使 JSP 文件中的 Java 代码尽可能少。对这些值的格式化改为在 syncGuiToModel() 中进行。

Translator 使用 processForm() 清除以前显示的错误,并从提交的表单中分析此信息。当 servlet 接收到一个提交的表单时,它就会将对该表单的处理委托给 Translator。在本委托期间,Translator 分析提交表单的值,并将这些值分别存储在 String 变量中。这些存储变量随后通过 syncModelToGui()(由 servlet 调用)转换为业务对象的值。

syncGuiToModel() 和 syncModelToGui() 是两个类似的方法,顾名思义,其中一个方法按某个方向对值执行同步,而另一个方法按相反的方向执行同步。syncGuiToModel() 从业务对象的属性中提取这些值,并使用 Object Translator 预先格式化每个属性值。Object Translator 将值预先格式化为要在屏幕上显示的值。随后,它将 Translator 的对应 String 变量设置为这个值。syncModelToGui() 执行的操作相同,但方向相反。下面是从典型的 syncGuiToModel() 中摘出的一小段代码:

DoubleTranslator dtDouble = new DoubleTranslator();

String sTemp = dtDouble.translate(loan.getInterestRate());

setInterestRate(sTemp);

为了使转换代码具有最大的可重用性,并为整个站点提供一种共同的转换,syncGuiToModel() 和 syncModelToGui() 使用的都是 Object Translator 类。Object Translators 与 Translator 对象联系得如此紧密,以致于几乎可将它们看作是 Translator 对象的规则。Object Translator 类是一个简单的类,它的唯一用途就是将一种数据类型转换为格式化字符串,以及将格式化字符串转换为它的数据类型。下面是一个很简单的 Object Translator 类的代码:

public class DoubleTranslator extends ObjectTranslator

{

public String translate(double doubleValue)

{

return Double.toString(doubleValue);

}

public double translate(String stringToBeTranslated) throws Exception

{

double dRV = 0.0;

try {

Double dbDouble = Double.valueOf(stringToBeTranslated);

dRV = dbDouble.doubleValue();

}

catch(Exception e)

{

Exception eTranslation =

new Exception("Please enter a numeric value like 1.0 or 1.25");

throw eTranslation;

}

return dRV;

}

}

当这个样例 Object Translator 将 double 转换为格式化的 String 时,它只需调用 Double.toString()。这个方法可实现更强大的功能,例如,可以添加几行代码,使得当格式化类似 1000.25 这样的大 double 值时,可预格式化这个值,以便显示为 1,000.25。

对于 DoubleTranslator.translate(String),须注意的重要一点是,它会发出一个可读性很好的异常,而不是标准的 Java.lang.NumberFormatException 异常。JSP 文件将此异常的消息直接显示给网站访问者,因此,让网站的普通访问者很容易地理解该方法发出的异常是非常重要的。

4. 小结

使用 Translator 模式框架的优点很多,不仅可以降低网站的成本,而且可以提高用户的满意度。由于不同组件都只执行专门的任务,因而网站的构建成本降低了。这些专门任务分配给生产小组,如 HTML 小组或 Java 程序员小组。因为 Translator 模式的 ObjectTranslators 在整个网站重用,所有全部格式化和分析都是以相同的方式进行的。因为每项任务都以相同的方式完成,所以网站访问者就能够以一致的方式查看整个网站的信息。这进一步提高了用户的满意度。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有