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

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

最后,servlet 专用于处理导航流和业务对象的持久性。当 servlet 接收到提交表单时,它将获得 Translator 对象的一个实例,并使用 processForm() 方法将对表单的分析委派给 Translator 对象。在表单的分析完成以后,servlet 就会让 Translator 对象使用 syncModelToGui() 方法将业务对象的值同步为表单中所提交的值。在成功转换所提交的值并将它们设置到业务对象上之后,servlet 将对业务对象执行持久化,并向网页访问者显示确认页。

2. 给我显微镜

下面我们仔细查看 Translator 模式的三个部分:JSP 文件、servlet 和 Translator 对象。(本文的示例遵循的是 Servlet 2.1 规范和 JSP 1.0 规范。这些示例是在 WebSphere 3.02 和 WebSphere 3.5 环境下构建和测试的。)

JSP 文件

使用 Translator 模式的典型 JSP 输入表单如下所示:

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

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

Java.util.Hashtable"%>

<HTML>

<%

LoanTranslator ltLoan = LoanTranslator.getInstance(request);

Hashtable htErrors = ltLoan.getErrors();

%>

<HEAD>

</HEAD>

<BODY>

<%= displayErrors(htErrors) %>

<action="/servlet/com.ibm.developerworks.translatorpattern.LoanRegistrationServlet">

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

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

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

</FORM>

</BODY>

</HTML>

在 Translator 模式中,所有表单都是 JSP 文件,而非 HTML 文件,所以输入域的值可以是动态的。这一点很重要,因为我们网站的访问者是实实在在的人,他们会犯输入错误。比让网站通知您它不接受您的输入更糟糕的唯一一件事情是,让它通知您它不接受您在某个域中输入的内容,并要求您重新键入其他 20 个域,因为某个程序员正忙于检查股市报价,没有时间来提高输入表单的用户友好性。在 Translator 模式中,输入表单的每个输入域的值都是动态设置的,因此如果因存在输入错误而需要向网站访问者重新显示输入页,他们就会看到突出显示的错误,但其他输入项仍然保留。

请记住,JSP 文件是由对 Java 代码知之甚少或一无所知的网站设计者编写和维护的。鉴于这个原因,我们希望 JSP 文件包含尽可能少的 Java 代码。但我们在上一段的说明听起来好像需要编写大量的 Java 代码。该 JSP 文件示例只有少量 Java 代码,但它们主要位于表达式 (<%= x %>) 中。它们能够使用这些众多的功能,因为 JSP 文件从它的超类 com.ibm.igs.ispkcm.translator.JspBase 中继承了这些代码,并将大量代码放在 Translator 对象中。

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