困扰JSP的一些问题与解决方法 (2)

分类: Jsp   出处:iocblog整理  更新时间:2009-06-02   添加到收藏  

  
  问题 #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("<br>");
  }
  %>
  
  也许什么时候会有用户自定义标记来做这些循环。对"if"也是如此。jsp页可能看上去成了很古怪的java代码。而同时,webmacro循环很漂亮:
  #foreach $isp in $isps {
  the next name is $isp.name <br>
  }
  
  如果必要的话,#foreach指令可被自定义的 #foreach-backwards指令很容易地取代。
  
  用jsp的话很可能变这样:(这里是一个可能的 <foreach>标记)
  
  <foreach item="isp" list="isps">
  the next name is <jsp:getproperty name="isp" property="name"/> <br>
  </foreach>
  
  设计者当然地回选择前者。
  
  问题 #5: 无用的出错信息
  
  jsp常有一些令人惊讶的出错信息。这是因为页面首先被转换成为一个servlet然后才进行编译。好的jsp 工具可以相对增加找到出错位置的可能性,但即使是最好的工具也无法使所有出错信息都能容易地被读懂。由于转化的过程,一些错误对工具来说可能根本不可能被识别。
  例如,假设jsp页面需要建立一个对所有页通用的标题。以下代码并没有错:
  
  <% static string title = "global title"; %>
  
  但tomcat会提供以下出错信息:
  work/%3a8080%2f/jc_0002ejspjc_jsp_1.java:70: statement expected.
  static int count = 0;
  ^
  此信息认为以上脚本被放入 _jspservice()方法而静态变量不允许放入方法中。该语法应该是 <%! %>。页面设计者很难读懂这些出错信息。即使最好的平台在这方面也做得很不够。即使所有 java代码都从页中移出也无法解决问题。另外,以下表达式有什么错?
  
  <% count %>
  tomcat给出:
  work/8080/_0002ftest_0002ejsptest_jsp_0.java:56: class count not found in
  type declaration.
  count
  ^
  work/8080/_0002ftest_0002ejsptest_jsp_0.java:59: invalid declaration.
  out.write(" ")

上一页 [1] [2]



文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。