快速业务通道

纯 servlet:重新考虑视图 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
URL,让 MadnessWriter 实例跳过这个页面的链接 (也可以禁用它)。然后调用一个方法,开始输出 TABLE 元素,我将这个元素 称为框:

out.printBeginBox();

纯 servlet:重新考虑视图(4)

时间:2011-06-11 Jason Van Cleve

这会开始几个标记,直到框包含的具体内容为止。(后面将通过一个相似的 调用结束这些标记。注意,上面的 printMenu() 调用了同样的方法。)这种封 装方式可以大大简化调试。例如,我曾经遇到一个 bug,框中的某些边界 TD 的 宽度是 1%,对于浏览器窗口来说,这个宽度太大了。我将它改为 0%,从而在一 个地方进行修改就纠正了整个站点上的效果。这可以用定制的标记库来完成,但 是没这么容易。

下面几行输出一个或两个 DIV 元素,第一个在提交表单之后向用户表示成功 :

if ("true".equals(request.getAttribute (P_SUCCESS))) out.printDIV("smallHeading", "Team picks were saved successfully."); out.printDIV("reminder", "(Reminder: \"Pick 20 \" represents the team you" + " think likeliest to win. \"Pick 1\" is the least likely.)");

"smallHeading" 和 "reminder" 自变量指定要应用于 DIV 开始标记的层叠 样式表(CSS)类名,第二个自变量是在 DIV 标记之前输出的文本。如果 reminder DIV 的内容比较复杂,我会调用 out.printBeginDIV("reminder"), 这个方法只输出 DIV 开始标记。HTMLWriter 和 HTMLFlexiWriter 中也使用同 样的命名模式。但是,HTMLConstants 中的字符串常量不太一样,例如默认的 DIV 开始和结束标记分别使用 DIV 和 END_DIV。

在 reminder 后面,输出一个表单,其中提供下拉控件让用户选择 20 支球 队。如果用户只能查看已经做出的选择,那么只输出球队的名称。按照 Java 语 法,这个逻辑的表达非常自然:

if (!readOnly)   out.printSELECT(P_PICK + i, selectTeams, teamID); else   {   String teamName = (String)(selectTeams.get(teamID));   out.print((teamName != null) ? teamName : "(no pick)");   }

printSELECT() 方法为 map 中的每个键/值对创建一个 OPTION,它预先选择 键与 teamID 匹配的对象。

为了完成表单,需要输出显示在页面右边的球队列表。球队的数组按照 NCAA 地区和排名进行排序。每个地区有一个小标题,整个列表显示为两列。这需要一 些数学计算,所以将它放在一个单独的方法中,见清单 1:

清单 1. 将输出代码放在一个方法中

private void doRegionList(Team[] teams, MadnessWriter out) throws IOException   {   out.print(TABLE + TR);   out.printBeginTD(null, "regionList");   for (int i = 0; i < teams.length; i++)    {    if ((i & 15) == 0)     {     if (i == 32)      {      out.print(END_TD + NL);      out.printBeginTD(null, "regionList");      }     out.print(NL + DIV);     out.print(REGION_NAMES[i >> 4]);     out.print(":" + END_DIV + OL);     }    out.print(NL + LI);    out.printHTMLEscape(teams[i].getFullName());    out.print(" (");    out.print((teams[i].getRank() & 15) + 1);    out.print(")");    out.print(END_LI);    if ((i % 16) == 15)     out.print(END_OL);    }   out.print(END_TABLE_3);   }

纯 servlet:重新考虑视图(5)

时间:2011-06-11 Jason Van Cleve

END_

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号