当前位置: 首页 > 面试题库 >

JSP中的表达语言无法正常工作

云弘壮
2023-03-14
问题内容

我是JSP的新手,正在使用表达语言。我将Eclipse Galileo与版本2.5和Tomcat 6服务器一起使用。我只想问一下我的简单表达语言是否不会像我写的那样打印出淡淡的文字${1>2},假设它给出了false,但${1>2}仅在呈现页面时才显示 。但是,当我使用<c:out value="${1>2}"/>它正确打印错误。我认为标签库存在问题。请为我建议原因,我为此提供了示例代码,以便你了解我要去哪里:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
                                 "http://www.w3.org/TR/html4/loose.dtd">


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Expression Language Example</title>
</head>
<body>

Is 1 greater than 2 using cout  :<c:out value="${1>2}"/>

Is 1 greater than 2 without using cout: ${1>2}
</body>
</html> 

根据答案进行更新,这里是更多信息:

我正在展示我的web.xml样子:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>ScriptLessJsp</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>

  <servlet>
    <description></description>
    <display-name>ElServlet</display-name>
    <servlet-name>ElServlet</servlet-name>
    <servlet-class>com.servlet.El.ElServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ElServlet</servlet-name>
    <url-pattern>/ElServlet</url-pattern>
  </servlet-mapping>
  <servlet>
    <description></description>
    <display-name>Collections</display-name>
    <servlet-name>Collections</servlet-name>
    <servlet-class>com.servlet.El.Collections</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Collections</servlet-name>
    <url-pattern>/go</url-pattern>
  </servlet-mapping>
</web-app>

在我的lib文件夹中,我只添加了jstl.jar一个<c:out>标签,以便可以使用标签显示,但是我的模板文本EL无效。


问题答案:

我引用我之前提供的关于EL无法正常工作的答案:

换句话说,EL表达式没有得到评估吗?可能有以下一种或多种原因:

  1. 有问题的应用程序服务器不支持JSP 2.0
  2. web.xml未声明为的Servlet 2.4或更高版本。
  3. @page配置有isELIgnored=true
  4. web.xml中配置有<el-ignored>true</el-ignored>在<jsp-config>
    在你的特定情况下,EL在taglibs中工作,但在模板文本中工作,因此我怀疑它是由第2点引起的。请确保至少将你web.xml声明为Servlet 2.4。由于Tomcat 6.0支持Servlet 2.5,所以我建议将你声明为Servlet 2.5:web.xml
<web-app 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="Your_WebApp_ID"
    version="2.5">

    <!-- Here you go. -->

</web-app>

我看到的另一个罕见原因是类路径中与EL JAR发生冲突。确保你没有将任何特定于应用服务器的JAR文件复制到你的Web应用程序中,WEB-INF/lib或更糟糕的是,将其复制到了Web应用程序中JRE/lib

当你已经在使用Eclipse和Tomcat时,我将回顾你用于所有步骤的开发步骤。确保你正在使用“ Eclipse for Java EE开发人员”,并且已将Tomcat实例集成到Eclipse的“ 服务器”视图中,并且已创建一个设置为“ Servlet 2.5” 的动态Web项目,该项目使用了Tomcat实例。这样,一切应该自动进行(Eclipse将在构建路径本身中获取appserver的库,并自动生成Servlet 2.5兼容的库web.xml)。

更新:根据你的更新:这些com.servlet.Els ervlet看起来可疑。他们到底在做什么?解析EL?删除它们,然后重试。



 类似资料:
  • JSP表达式语言(EL)使得访问存储在JavaBean中的数据变得非常简单。JSP EL既可以用来创建算术表达式也可以用来创建逻辑表达式。在JSP EL表达式内可以使用整型数,浮点数,字符串,常量true、false,还有null。 一个简单的语法 典型的,当您需要在JSP标签中指定一个属性值时,只需要简单地使用字符串即可: <jsp:setProperty name="box" propert

  • 问题内容: 这个问题已经在这里有了答案 : 字符串替换方法不替换字符 (5个答案) 2年前关闭。 我正在尝试将所有特殊字符替换为“%”,例如: 我的正则表达式是: 在在线工具中*它可以正常运行,但在Java中 弦保持不变。 *我尝试过:http : //www.regexplanet.com/ http://regex101.com/和其他 问题答案: 字符串是不可变的。您忘了将新变量重新分配给:

  • 无效条目:(仅为数字) 谢谢,巴拉吉

  • 问题内容: 我放弃了,问社区… 在我的项目中,我使用的是Hibernate 3.6.4.Final和自定义的SQL方言: 在HQL查询中使用该方法失败。这是查询: 错误: 因此,似乎该功能未正确注册。我已经使用较旧的Hibernate版本完成了几次,并且一直都以这种方式工作。 以防万一有人问:是的,我将Hibernate配置为使用方言: 编辑:在SELECT子句中,我可以使用已注册的函数而不会出现

  • 我知道这不是一个应该在这里问的问题。请帮我解决这个问题。 我试图在下面查询中使用case语句,但是我找不到我在其中所做的错误。请你帮帮我.. 我得到的错误如下 SQL]选择tsc_accessory_details_for_repaired_and_qc_pass_phone_list.ccord(tsc_accessory_details_for_repaired_and_qc_pass_pho

  • 问题内容: 是否有将正则表达式从一种流行语言的语法转换为另一种语法的工具?例如,将Python样式的正则表达式转换为Java样式的正则表达式? 或至少有人是否制定了一套规则来进行这些转换? 而且显然某些构造将无法转换。 问题答案: 转至本文,并单击 “ Regex信息对Regex口味的比较”链接,该链接使我进入了一个名为RegexBuddy的工具,听起来它可能可以满足您的要求。