问题描述
环境是java1.764win8.1web.xml<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"version="2.5">JSTL是网上下的1.2.1版本在网上各种搜都没找到答案,哪位能给个正确的解释isELIgnored="true"不是用来设置忽略直接嵌入在html中的EL代码的吗?设置之后${}变量都只能用<c:out>输出,但为什么会影响<c:if><c:out><c:set><c:choose><c:foreach>都没有问题的还有就是在WEB-INFO目录加不加c.tld都是没有关系的,使用JSTL只要导入jstl包就好使用JSTL的1.2.0、1.2.1、1.2.2版本也是没有关系的如果不加isELIgnored="true"会报错(不加的话默认isELIgnored="false",这样就无法使用<c:if>了,但是其他的标签好像还可以用)HTTPStatus500-/page2/ELTest.jsp(line:21,column:4)AccordingtoTLDorattributedirectiveintagfile,attributevaluedoesnotacceptanyexpressionstypeExceptionreportmessage/page2/ELTest.jsp(line:21,column:4)AccordingtoTLDorattributedirectiveintagfile,attributevaluedoesnotacceptanyexpressionsdescriptionTheserverencounteredaninternalerrorthatpreventeditfromfulfillingthisrequest.exceptionorg.apache.jasper.JasperException:/page2/ELTest.jsp(line:21,column:4)AccordingtoTLDorattributedirectiveintagfile,attributevaluedoesnotacceptanyexpressionsorg.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:42)org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:443)org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:149)org.apache.jasper.compiler.Validator$ValidateVisitor.checkXmlAttributes(Validator.java:1240)org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:875)org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1538)org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2375)org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2427)org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2433)org.apache.jasper.compiler.Node$Root.accept(Node.java:474)org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2375)org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:1798)org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:217)org.apache.jasper.compiler.Compiler.compile(Compiler.java:373)org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)javax.servlet.http.HttpServlet.service(HttpServlet.java:728)org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
解决方案
本帖最后由 FWDuo 于 2014-01-01 08:44:24 编辑
解决方案二:
<%@pageisELIgnored="true|false"%>如果设定为真,那么JSP中的表达式被当成字符串处理。比如下面这个表达式<p>${2000%20}</p>在isELIgnored="true"时输出为${2000%20},而isELIgnored="false"时输出为100。Web容器默认isELIgnored="false"。
解决方案三:
引用1楼huxiweng的回复:
<%@pageisELIgnored="true|false"%>如果设定为真,那么JSP中的表达式被当成字符串处理。比如下面这个表达式<p>${2000%20}</p>在isELIgnored="true"时输出为${2000%20},而isELIgnored="false"时输出为100。Web容器默认isELIgnored="false"。
您没有看清问题为什么在isELIgnored="false"情况下<c:if>无法使用
解决方案四:
引用2楼FWDuo的回复:
Quote: 引用1楼huxiweng的回复:
<%@pageisELIgnored="true|false"%>如果设定为真,那么JSP中的表达式被当成字符串处理。比如下面这个表达式<p>${2000%20}</p>在isELIgnored="true"时输出为${2000%20},而isELIgnored="false"时输出为100。Web容器默认isELIgnored="false"。您没有看清问题为什么在isELIgnored="false"情况下<c:if>无法使用
解决方案五:
引用3楼huxiweng的回复:
Quote: 引用2楼FWDuo的回复:
Quote: 引用1楼huxiweng的回复:
<%@pageisELIgnored="true|false"%>如果设定为真,那么JSP中的表达式被当成字符串处理。比如下面这个表达式<p>${2000%20}</p>在isELIgnored="true"时输出为${2000%20},而isELIgnored="false"时输出为100。Web容器默认isELIgnored="false"。您没有看清问题为什么在isELIgnored="false"情况下<c:if>无法使用
可是为什么在设置为false的时候只有<c:if>不行<c:out><c:set><c:choose><c:foreach>都是可以的<%@taglibprefix="c"uri="http://java.sun.com/jstl/core"%><%@pagecontentType="text/html;charset=UTF-8"language="java"isELIgnored="true"%><html><head><title></title></head><body><c:setvar="age"value="20"scope="request"/><c:iftest="${age<18}">abc</c:if>