jstl的问题

来源:互联网 发布:优衣库 实体 淘宝 编辑:程序博客网 时间:2024/05/21 09:31

在使用jstl时 需要的jar包jstl.jar 和standard.jar  只需要在jsp页面引入标签库 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

不需要把相关的tld复制到WEB-INF下 因为jstl的所有的tld文件都在standard.jar的META_INF下

服务器的选择:当使用tomcat5.5时由于其没有集成对jstl1.2的支持,所以要添加el.jar,否则会报错-->

严重: Servlet.service() for servlet jsp threw exception
Java.lang.ClassNotFoundException: javax.el.ValueExpression

tomcat 6.0集成了jstl1.2的支持,所以直接加入jstl.jar 和standard.jar  即可使用!

如果报:java.lang.LinkageError错

Xml代码 
javax.faces.FacesException: java.lang.LinkageError: loader constraints violated when linking javax/el/ExpressionFactory class   
    org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:425)   
    org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:211)   
    org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)   
    org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:216)   
    org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41)   
    org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:132)   
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:140)   
    org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)   
    org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281) 

javax.faces.FacesException: java.lang.LinkageError: loader constraints violated when linking javax/el/ExpressionFactory class
 org.apache.myfaces.context.servlet.ServletExternalContextImpl.dispatch(ServletExternalContextImpl.java:425)
 org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:211)
 org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
 org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:216)
 org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41)
 org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:132)
 javax.faces.webapp.FacesServlet.service(FacesServlet.java:140)
 org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
 org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281) 
 

错误的原因是tomcat/lib下的el-api.jar与项目WEB-INF/lib目录下的el-api.jar冲突。

把项目目录下的el-api.jar删除即可。

 

<foreach>标签的使用

<c:forEach items="${plist}" var="p" varStatus="s">
<c:out value="${p.id}"></c:out><br>
<c:out value="${p.name}"></c:out><br>   ${p.id}相当于都用对象的getId()方法
<c:out value="${p.age}"></c:out><br>
<c:out value="${s}"></c:out>
</c:forEach>

items是从page request session application 中取过来的集合

var 是你定义的变量 即集合中迭代出来的对象引用

varStatus :

current当前这次迭代的(集合中的)项
index当前这次迭代从 0 开始的迭代索引
count当前这次迭代从 1 开始的迭代计数
first用来表明当前这轮迭代是否为第一次迭代的标志
last用来表明当前这轮迭代是否为最后一次迭代的标志
begin属性值  
end属性值  
step属性值   

其中一个例子,其他的类似
  <c:forEach items="${list1}" var="obj"varStatus="stat">
  ${stat.index}
...
 </c:forEach>

 

 

 

为循环控制,它可以将集合(Collection)中的成员循序浏览一遍。运作方式为当条件符合时,就会持续重复执行的本体内容。 
语法1:迭代一集合对象之所有成员

Java代码 复制代码
  1. <c:forEach [var="varName"] items="collection"     [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]  >         
  2.    本体内容          
  3. </c:forEach>   
[java] view plain copy
  1. <c:forEach [var="varName"] items="collection"     [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]  >        
  2.    本体内容         
  3. </c:forEach>   



语法2:迭代指定的次数

Java代码 复制代码
  1. <c:forEach [var="varName"] [varStatus="varStatusName"] begin="begin" end="end" [step="step"]>      
  2.    本体内容          
  3. </c:forEach>  
[java] view plain copy
  1. <c:forEach [var="varName"] [varStatus="varStatusName"] begin="begin" end="end" [step="step"]>     
  2.    本体内容         
  3. </c:forEach>  


标签具有以下一些属性: 

           var:迭代参数的名称。在迭代体中可以使用的变量的名称,用来表示每一个迭代变量。类型为String。 

           items:要进行迭代的集合。对于它所支持的类型将在下面进行讲解。 

           varStatus:迭代变量的名称,用来表示迭代的状态,可以访问到迭代自身的信息。 

           begin:如果指定了items,那么迭代就从items[begin]开始进行迭代;如果没有指定items,那么就从begin开始迭代。它的类型为整数。 

           end:如果指定了items,那么就在items[end]结束迭代;如果没有指定items,那么就在end结束迭代。它的类型也为整数。 

           step:迭代的步长。 

           标签的items属性支持Java平台所提供的所有标准集合类型。此外,您可以使用该操作来迭代数组(包括基本类型数组)中的元素。它所支持的集合类型以及迭代的元素如下所示: 

           java.util.Collection:调用iterator()来获得的元素。 

           java.util.Map:通过java.util.Map.Entry所获得的实例。 

           java.util.Iterator:迭代器元素。 

           java.util.Enumeration:枚举元素。 

           Object实例数组:数组元素。 

           基本类型值数组:经过包装的数组元素。 

           用逗号定界的String:分割后的子字符串。 

           javax.servlet.jsp.jstl.sql.Result:SQL查询所获得的行。 

           不论是对整数还是对集合进行迭代,的varStatus 属性所起的作用相同。和var属性一样,varStatus用于创建限定了作用域的变量(改变量只在当前标签体内起作用)。不过,由varStatus属性命名的变量并不存储当前索引值或当前元素,而是赋予javax.servlet.jsp.jstl.core.LoopTagStatus类的实例。该类包含了一系列的特性,它们描述了迭代的当前状态,如下这些属性的含义如下所示: 

           current:当前这次迭代的(集合中的)项。 

           index:当前这次迭代从0开始的迭代索引。 

           count:当前这次迭代从1开始的迭代计数。 

           first:用来表明当前这轮迭代是否为第一次迭代,该属性为boolean类型。 

           last:用来表明当前这轮迭代是否为最后一次迭代,该属性为boolean类型。 

           begin:begin属性的值。 

           end:end属性的值 

           step:step属性的值 
 限制 

  ·假若有begin属性时,begin必须大于等于 0 

  ·假若有end属性时,必须大于begin 

  ·假若有step属性时,step必须大于等于0 

  Null 和 错误处理 

  ·假若items为null时,则表示为一空的集合对象 

  ·假若begin大于或等于items时,则迭代不运算 

  说明 

  如果要循序浏览一个集合对象,并将它的内容显示出来,就必须有items属性。 

标签一般结合el表达式使用${}从page request session application四个作用域取值

${param.xxx}从URL后取值

 

1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 50多天孩子咳嗽怎么办 2岁宝宝伤风鼻塞怎么办 2个月伤风鼻塞怎么办 3个月宝宝鼻塞怎么办 感冒治好后咳嗽一直不好怎么办 天气太热感冒了怎么办 3个月的婴儿鼻塞怎么办 四个月宝宝感冒鼻塞严重怎么办 4个月小孩鼻塞怎么办 4个多月的宝宝流鼻涕怎么办 4个月大的宝宝流鼻涕怎么办 两岁宝宝着凉了怎么办 7岁儿童晚上鼻塞怎么办 儿童感冒鼻塞怎么办速效办法 7岁儿童感冒鼻塞怎么办 七个月婴儿感冒流鼻涕怎么办 婴儿感冒流鼻涕怎么办速效办法 三个月婴儿感冒咳嗽流鼻涕怎么办 五个月婴儿感冒咳嗽流鼻涕怎么办 两个多月的宝宝鼻塞怎么办 3个月宝宝感冒鼻塞怎么办 2个月宝宝感冒鼻塞怎么办 5个月宝宝鼻塞怎么办 6个月宝宝鼻塞怎么办 3个月婴儿感冒咳嗽怎么办 感冒打喷嚏打不出来怎么办 4岁宝宝体温37.5怎么办 8个月的宝宝鼻塞怎么办 4个月婴儿鼻塞怎么办 我一躺下就鼻塞怎么办 感冒了鼻子堵了怎么办 感冒鼻涕流的多怎么办 小孩感冒鼻塞怎么办最简单方法 鼻子痒老打喷嚏流鼻涕怎么办 眼睛红痒鼻子流鼻涕怎么办 19个月宝宝流鼻血怎么办 9个月宝宝流鼻血怎么办 8个月宝宝流鼻血怎么办 4个月宝宝流鼻血怎么办 20个月宝宝发烧流鼻血怎么办 60天宝宝老鼻塞怎么办