题
这个问题已经有一个答案在这里:
- EL表不是评价在JSP 2答案
我有一个JSP页上运行Tomcat5.5.我有下列代码:
<c:forEach var="i" begin="1" end="10" step="1">
<c:out value="${i}" />
<br />
</c:forEach>
输出我收到的是:
${i}
${i}
${i}
${i}
${i}
${i}
${i}
${i}
${i}
${i}
我不能工作了,为什么forEach循环的工作,但出不工作。任何帮助任何一个可能给将是巨大的。
解决方案
我知道这是应该在通过默认,但是我跑过网页和(或甚至同一页,改变行为),那里的EL处理不会发生。添加以下的任何这种网页应该解决的问题:
<%@ page isELIgnored="false" %>
我将它添加到每一页,因为它不会伤害,并且我仍然不知道的根本原因,有时会导致一页的停止解释EL表达方式。
其他提示
我只是有这个相同的问题和花了永远,试图找出是什么是错误的。
我已经开发了许多网络的应用程序,从头开始。为什么突然这是一个不合作?
一个差别是,这一次我使用的专家网络应用程序原型,以生成项目的结构。它创造了一个web.xml 文件看起来是这样的:
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
</web-app>
一旦我意识到,作为我的问题,我确信我有答案。所以我复制了一个我的2.5web.xml 标头、重建和重新部署。没有雪茄。简直不敢相信这不是问题。清理项目,重新启动tomcat。不。
RHSeeger的答案,导致我在尝试把 <%@页isELIgnored="虚假"%>.这解决了该问题。但我仍然想知道为什么el开始得到忽略的开始。
我想el被忽略的东西,因为错了我web.xml所以我密切地检查了它在与比较的另一个网络应用程序是web.xml 我知道。没有明显的差异。
然后我删除了 <%@页isELIgnored="虚假"%>从我JSP,并重新部署,假设el不会再次评估,但是出乎我的意料中,el进行评价好!
然后,计算必须以某种形式的缓存问题,我解开我的变化web.xml 重建问题。我重新部署,但仍然el正在评估是否正确,即使坏web.xml.然后我清洗我的整个项目(我的使用分解的部署),吹走的解目录和重建。然后,我重新启动tomcat。然而,埃似乎是获得正确评估,尽管不好web.xml.
终于恍然大悟我。我简单地添加一个空间,一些地方在JSP,重新包装,并刷新的网页。宾果!现在el没有得到评估。
所以问题 是 与web.xml.它将进一步复杂的事实,Jsp没有得到重新编译,除非他们已经改变。不知道,如果tomcat使用MD5求和决定如果Jsp需要重新编译或是什么。另一种可能性是,我使用的瓷砖,这我知道有一个缓存机制,但我不会期望,为了生存的一个tomcat重新启动。
无论如何,除非修改Jsp后固定的web.xml所有的赌注都是关于是否EL将再次开始工作。希望这样可以节省别人头痛的问题。我也感兴趣,如果任何人都可以告诉我是否是tomcat不重新编译Jsp或砖缓存的输出JSP。我敢肯定这是重新编译,因为在编制时间是当JSP应该怎么处与${}el表情,对吗?瓷砖不能实际上高速缓存什么被取代的到el表达,否则,所有种类的问题会出现。
这是头web.xml 这引起的问题
下面的行家产生的头停止EL被eval'ed.
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
使用以下标题eval的EL。
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
确保包括相关名字空间的web.xml.只是试图取代
<web-app>
喜欢的东西
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"
metadata-complete="true">
它修好它对我来说。你可以找到正确的名字空间的用于Tomcat实例中的例子应用程序来Tomcat安装。
对于那些有兴趣,相当于XML语法JSP2.0:
<jsp:directive.page isELIgnored="false"/>
也有类似的问题,凯文,我用家开始使用网络应用程序,但是没有喜悦与评估表达jsp-我已经删除DOCTYPE头-都是良好的现在不玩isELIgnored位专家生成web.xml 其链接到2.3其作为彼得说有萨默认
看到我的答案 Javascript串。替换(/\$/,str)工作的古怪在jsp文件 可能的原因。
再回答:${我}是表达所谓的'表达的语言'.有时,表达的语言可以被禁止。参见上述答复的潜在原因,以及如何使它。
使用tomcat6.它不需要任何的配置用于在EL web.xml.
从控制器:
@RequestMapping(value = "createcustomer",method = RequestMethod.GET)
public String customer(Model model)
{
Customer cus=new Customer();
cus.setCustomerNumber("Test");
model.addAttribute("customer",cus);
return "createcustomer";
}
在查看:
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<div class="cl">
<form:form commandName="customer" method="POST">
<p>Name: <c:out value="${customer.CustomerNumber}"></c:out></p>
</form:form>
<div>
输出:
Name: Test