0

当我尝试通过添加来测试我的 jstl 库(jstl-1.1.2.jar 和标准 1.1.2.jar)时,它不会在浏览器中显示任何内容。

这是我的 home.jspx:

<?xml version="1.0" encoding="utf-8"?>
<jsp:root
    xmlns:jsp="http://java.sun.com/JSP/Page"
    xmlns:c="http://java.sun.com/jsp/jstl/core"
    xmlns="http://www.w3.org/1999/xhtml"
    version="2.1">

<jsp:directive.page contentType="text/html" pageEncoding="UTF-8" />
<jsp:output omit-xml-declaration="true" />
<jsp:output doctype-root-element="HTML"
            doctype-system="about:legacy-compat" />

<html lang="en">
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <title>gdgdfgdg</title>

</head>
<body>
<h1>fsdf</h1>
<c:out value="Test"/>
</body>
</html>

</jsp:root>

添加了必要的罐子。无法弄清楚是什么问题。

编辑:

这是源代码,浏览器收到:

<!DOCTYPE HTML SYSTEM "about:legacy-compat">
<html lang="en">
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="content-type"/>
    <title>gdgdfgdg</title>
  </head>
  <body>
    <h1>fsdf</h1>
    <c:out value="TEST"/>
  </body>
</html>

我将以下依赖项添加到 maven 并正确加载了顶部描述的正确 jars..

    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.1.2</version>
    </dependency>
    <dependency>
        <groupId>taglibs</groupId>
        <artifactId>standard</artifactId>
        <version>1.1.2</version>
    </dependency>
4

2 回答 2

0

提供的 jspx 在我的环境 Tomcat 6.0 中运行良好,并且具有以下特性:

<dependency>
    <groupId>javax.servlet.jsp.jstl</groupId>
    <artifactId>jstl-api</artifactId>
    <version>1.2</version>
</dependency>
<dependency>
    <groupId>org.glassfish.web</groupId>
    <artifactId>jstl-impl</artifactId>
    <version>1.2</version>
</dependency>
<dependency>
    <groupId>javax.el</groupId>
    <artifactId>el-api</artifactId>
    <version>2.2</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.1</version>
    <scope>provided</scope>
</dependency>

根据Apache的说法,1.1.2 标签库应该可以在 Tomcat 5.0 或更高版本上运行,但由于您在 jspx 的头部包含了 JSP 2.1 版,因此您需要在 Servlet 规范 2.5 或更高版本的服务器上运行,例如 Tomcat 6。

您最好的选择是使用我提供的依赖项并确保您的 servlet 容器是最新的。

于 2013-09-05T03:44:38.483 回答
-2

如果一切正常,试试这个简单的 .jsp 页面。测试页使用随机 fmt 和 c 功能。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%@ 
    taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %><%@
    page contentType="text/html; charset=UTF-8" pageEncoding="ISO-8859-1"
    import="java.util.*,
    java.text.*
    "
%><%

String var0 = "Foodoo0 " + System.currentTimeMillis();
pageContext.setAttribute("var1", "Foodoo1 " + System.currentTimeMillis());
pageContext.setAttribute("var2", "Foodoo2 " + System.currentTimeMillis());

double distance = 1234.567;
pageContext.setAttribute("distance", distance);

%><!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Test page</title>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</head>
<body>

var0=<%= var0 %> <br/>
var1=${var1} <br/>
<c:out value="COut Foo" /> <br/>
var2=<c:out value="${var2}" /> <br/>

<br/>
Use locale fi_FI<br/>
<fmt:setLocale value="fi_FI" scope="page" />
<c:set var="distanceEL" value="${distance}" />
fmt0=${distance} | ${distanceEL} <br/>
fmt1=<fmt:formatNumber pattern="0.0" value="${distance}" /> <br/>
fmt2=<fmt:formatNumber pattern="0.00" value="${distanceEL}" /> <br/>
fmt3=<%= new DecimalFormat("0.0").format(distance) %>

<br/>
Use locale en_US<br/>
<fmt:setLocale value="en_US" scope="page" />
<c:set var="distanceEL" value="${distance+3456.78}" />
fmt0=${distance} | ${distanceEL} <br/>
fmt1=<fmt:formatNumber pattern="0.0" value="${distance}" /> <br/>
fmt2=<fmt:formatNumber pattern="0.00" value="${distanceEL}" /> <br/>
fmt3=<%= new DecimalFormat("0.0").format(distance) %>

</body>
</html>

我在 Tomcat6 服务器中使用过这些库,但它们有点旧。没有费心去更新,因为 Tomcat6 本身就是一个遗留物。

  • lib/jstl-api-1.2.jar
  • lib/jstl-impl-1.2.jar
  • lib/el-api.jar_OLD(重命名旧的 tomcat .jar 以禁用它)
  • lib/el-api-1.1.jar
  • lib/el-impl-1.1.jar

这些是我在 Tomcat7 服务器中使用的文件,Tomcat7 有 lib/el-api.jar 和 lib/jasper-el.jar 都很好。无需更新它们。

  • javax.servlet.jsp.jstl-api-1.2.1.jar
  • javax.servlet.jsp.jstl-1.2.2.jar

从http://search.maven.org/#browse|707331597http://search.maven.org/#browse|-1308691387链接下载新鲜的 jars 。

确保在 mywebapp/WEB-INF/web.xml 文件中使用正确的 webapp 规范版本属性。这是 Tomcat6 网络应用程序。

<?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"
>
  <description>My webapp</description>
  <display-name>My webapp</display-name>
</web-app>

这是 Tomcat7 webapp。

<?xml version="1.0" encoding="ISO-8859-1"?>
<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" 
>
  <description>My webapp</description>
  <display-name>My webapp</display-name>
</web-app>
于 2013-09-04T20:31:08.663 回答