33

私は JSP が初めてで、式言語を使用しています。バージョン 2.5 および Tomcat 6 サーバーで Eclipse Galileo を使用しています。私の単純な式言語は${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 が機能していません。

4

5 に答える 5

55

ELが機能しないという問題に対して以前に提供した回答から引用しています。

つまり、EL 式は評価されませんか? 次の原因の 1 つ以上が考えられます。

  1. 問題のアプリケーション サーバーは JSP 2.0 をサポートしていません。
  2. web.xmlServlet 2.4 以降として宣言されていません。
  3. @pageで設定されisELIgnored=trueます。
  4. web.xml は in で構成さ<el-ignored>true</el-ignored><jsp-config>ます。

特定のケースでは、EL は taglibs では機能しますが、テンプレート テキストでは機能しないため、ポイント 2 が原因であると思われます。少なくともServlet 2.4web.xmlとして宣言されていることを確認してください。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>

私が見たもう 1 つのまれな原因は、クラスパスで EL JAR と競合していることです。appserver 固有の JAR ファイルを webapp にコピーしていないことを確認してください。WEB-INF/libさらに悪いことに、JRE/lib.

すでに Eclipse と Tomcat を使用しているため、このすべてに使用した開発手順を確認します。「Eclipse for Java EE developers」を使用していること、Tomcat インスタンスを Eclipse のServersビューに統合していること、Tomcat インスタンスを利用する「Servlet 2.5」に設定された動的 Web プロジェクトを作成していることを確認してください。このようにして、すべてが自動的に進むはずです (Eclipse はビルド パス自体で appserver のライブラリを取得し、サーブレット 2.5 準拠を自動生成しますweb.xml)。

更新:更新によると:これらのcom.servlet.Elサーブレットは疑わしいようです。彼らは正確に何をしますか?ELを解析していますか?それらを削除して再試行してください。

于 2010-01-30T18:44:03.377 に答える
12

私の場合、maven archetype generator によって webapp を生成しました。maven-archetype-webapp を使用します。2 つのことを変更する必要があります。

  1. web.xml で、head を次のように変更します。

    <?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: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"
      version="2.5">
    
  2. デフォルトでは、eclipse によって生成された jsp ファイルに次のヘッドが含まれます。

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

取り除くだけです。

于 2014-04-12T09:11:32.670 に答える
0

<!DOCTYPE html>JSPの行で、Eclipse で開始された Tomcat が EL を正しく解釈しないという問題がありました。war を使用してフォルダーにコピーwebappsし、コマンドラインで tomcat を起動するとうまくいきました。

したがって、明らかにEclipse Tomcatプラグインには問題があり<!DOCTYPE html>ますか?!

于 2015-09-07T19:52:33.203 に答える