我认为JSP有问题(下)(1) (作者:小龙亭主Blueski编译 2000年12月22日 14:22) (续上篇) 问题 #3: 简单工作仍然很累人 即使是很简单的工作,例如包含 header和 footer,在JSP中仍然很困难。假设有一个"header"和一个"footer"模板要包含到所有页面,而每一个模板要在content中包含当前的页标题。 在JSP中最佳办法是: <% String title = "The Page Title"; %> <%@ include file="/header.jsp" %> ...你的页面内容... <%@ include file="/footer.jsp" %> 页面设计者要记住不能遗漏第一行的分号并要将title定义为一个字符串。此外,/header.jsp和/footer.jsp必须在根目录下并且必须是可存取的完整文件。 在WebMacro中包含headers和footers做起来比较简单: #set $title = "The Page Title" #parse "header.wm" Your content here #parse "footer.wm" 这里对设计者来说没有要牢记的分号或对title的定义,.wm文件可以放在可自定义的搜索路径下。 问题 #4: 很粗燥的循环 在JSP中循环很困难。这里是用JSP重复打印出每一个ISP对象名字。 <% Enumeration e = list.elements(); while (e.hasMoreElements()) { out.print("The next name is "); out.println(((ISP)e.nextElement()).getName()); out.print(""); } %> 也许什么时候会有用户自定义标记来做这些循环。对"if"也是如此。JSP页可能看上去成了很古怪的Java代码。而同时,webmacro循环很漂亮: #foreach $isp in $isps { The next name is $isp.Name } 如果必要的话,#foreach指令可被自定义的 #foreach-backwards指令很容易地取代。 用jsp的话很可能变这样:(这里是一个可能的 标记) The next name is XML:namespace prefix = jsp /> 设计者当然地会选择前者。 问题 #5: 无用的出错信息 JSP常有一些令人惊讶的出错信息。这是因为页面首先被转换成为一个servlet然后才进行编译。好的JSP 工具可以相对增加找到出错位置的可能性,但即使是最好的工具也无法使所有出错信息都能容易地被读懂。由于转化的过程,一些错误对工具来说可能根本不可能被识别。