使用前缀“h”|导入的标记库中未定义标记“链接” tomcat |日食

时间:2010-07-08 09:02:13

标签: eclipse tomcat jsf-2

我在Netbeans IDE中工作并切换到Eclipse。

我在eclipse中使用向导创建了一个简单的基于JSF 2.0。完整的文件就是这个。

的index.jsp

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

<!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>Insert title here</title>
</head>
<body>
<f:view>
<h1>Hi, This is my JSF 2. Applicaiton</h1>
<br />
Click <h:link outcome="UserLogin">here</h:link> to go to login
</f:view>
</body>
</html>

当我在tomcat 7.0服务器中删除此应用程序时,我收到以下错误消息,

org.apache.jasper.JasperException: /index.jsp(14,6) No tag "link" defined in tag library imported with prefix "h"

在我的IDE中我也可以看到

帮助表示赞赏。

3 个答案:

答案 0 :(得分:1)

<h:link>是JSF 2.0中的新功能,并且在JSF 1.x中不存在。因此,此错误可能有以下原因:

  1. 您的/WEB-INF/lib实际上是JSF 1.x库,而不是JSF 2.0库。

  2. 您的faces-config.xml被声明为JSF 1.x而不是JSF 2.0。确保声明符合JSF 2.0规范。

    <faces-config
        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-facesconfig_2_0.xsd"
        version="2.0">
    

答案 1 :(得分:0)

一些简单的问题:

  1. 您的JSF库位于何处?

  2. 我认为你的意思更多:在我的 IDE我也可以看到哪个领先 成。

  3. Eclipse通常很不错     能够找到你的标签     库。它在抱怨吗?     在你的文件中使用这些库     jsp编辑器页面?

  4. 首先告诉我们有关您的设置的更多信息。

    我会抛出明显的解决方案:你已经失去了对JSF jar(jsf-impl.jar)的引用。将它包含在您的Tomcat lib文件夹中应该修复它。

答案 2 :(得分:0)

我也处于这个问题的中间,我想找到一些解决方案,但我不管理。正如我发现你和我一样。

如果您使用facelets,那么您可以看到该标记,相反,如果您使用普通的“JSF”,它会提供您提到的错误。

您可以尝试此程序来解决您的问题。

  1. 尝试了解如何在Web应用上配置facelets。例如,我的webapp文件以*.xhtml结尾,由facelets引擎处理。 将文件重命名为*.xhtml

  2. 前置此

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    

    <html
        xmlns="http://www.w3.org/1999/xhtml"
        xmlns:ui="http://java.sun.com/jsf/facelets">
    

    而不是普通的html。

  3. 删除任何指令

    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
    
  4. 详细说明可在此处找到:http://wiki.apache.org/myfaces/MigrateFromJspToFacelets

    然后您应该能够处理h:link