zoukankan      html  css  js  c++  java
  • Struts与JSTL中的迭代标签区别

    原文地址:http://hi.baidu.com/bbt_soft/blog/item/889a82009455050b738da58c.html

    首先看一下一下代码,代码实现的功能就是根据年级搜索出对应的班级。

    1.Struts的迭代标签:

    <tr>
         <td>年级: </td>
         <td>
          <select name="grade" onchange="change();">
           <option>hello</option>
           <option>1</option>
           <option>2</option>
           <option>3</option>
          </select>
         </td>
        </tr>
        <tr>
         <td>班级: </td>
         <td>
          <select name="class2">
           <logic:iterate id="class1" name="classList" type="vo.Student" scope="request">
            <option><bean:write name="class1" property="name"/></option>
           </logic:iterate>
          </select>
         </td>
        </tr>

    这是没有空判断的代码,一直会报这个错:javax.servlet.ServletException: javax.servlet.jsp.JspException: Cannot find bean classList in scope request。为什么会这样呢,因为如果用logic:iterate 标签,在页面初始化的时候,如果在页面有输出项,必须进行空判断,所以修改为如下代码:

    <tr>
         <td>班级: </td>
         <td>
          <select name="class2">
           <logic:empty name="classList">
            <option></option>
           </logic:empty>
          
           <logic:notEmpty name="classList">
            <logic:iterate id="class1" name="classList" type="vo.Student" scope="request">
             <option><bean:write name="class1" property="name"/></option>
            </logic:iterate>
           </logic:notEmpty>
          </select>
         </td>
        </tr>

    这样就不会报错了。

    2.JSTL的迭代标签:

    <tr>
         <td>班级: </td>
         <td>
          <select name="class">
          <c:forEach items="${classList}" var="class">
           <option>${class.name }</option>
          </c:forEach>
          </select>
         </td>
        </tr>

    用JSTL的迭代标签就不会出现上面的那种空判断报错的情况。

    总结:在页面初始化的时候,页面有输出项时,如果用struts的迭代标签,必须进行空判断,而jstl的迭代标签就不用进行空判断,具体什么原因,可能是不同的标签库封装细节不同的原因吧。

  • 相关阅读:
    wpf 用c#代码给img指定uri
    c 指针作为出参
    wpf获得系统毫秒数
    绑定元素的长宽(Canvas的子类自动伸展)
    PB与COM之关于创建COM,MTS, and COM+组件(1)
    ASA破解密码
    遭遇奸商(显卡篇)
    “启动Word时提示出错,只能用安全模式才能打开”的解决方法
    PowerSocket对象与HostName
    制做集成SATA驱动的XP安装盘
  • 原文地址:https://www.cnblogs.com/mabaishui/p/1807984.html
Copyright © 2011-2022 走看看