org.apache.jasper.JasperException:/JSP/BillingPayment.jsp(15,3)没有使用前缀“f”导入的标记库中定义的标记“ajax”

时间:2011-03-29 07:06:16

标签: jsf-2

对JSF 2有一些疑问,我只想使用JSF 2的ajax功能,而不是使用它的任何实现。

http://download.java.net/maven/2/com/sun/faces/jsf-api/2.1.1-b03/

获取了JSF库

但仍然没有一个支持我用来实现功能的ajax标签。

我收到错误 org.apache.jasper.JasperException:/JSP/BillingPayment.jsp(15,3)使用前缀“f”导入的标记库中未定义标记“ajax” 以下请求。

<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<html>
<body>
<h:form>
    <h:panelGrid>
        <h:inputText value="#{dataTableBean.sponsorID}">
            <f:ajax event="keyup" />
        </h:inputText>
        <h:outputText id="text" value="#{dataTableBean.sponsorID}" />
    </h:panelGrid>
</h:form>
</body>
</html>

对于我的假设,我没有合适的库,请你能给我正确的支持ajax的JSF2库。

2 个答案:

答案 0 :(得分:1)

您必须使用Facelets技术。您的sth.xhtml将拥有此表单

<?xml version='1.0' encoding='UTF-8' ?>
<!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:h="http://java.sun.com/jsf/html"
  xmlns:f="http://java.sun.com/jsf/core">
<h:head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta>
    <link rel="stylesheet" type="text/css" href="my.css" />
</h:head>
<h:body>
</h:body>
</html>

如果在创建jsf页面时使用netbeans ide 7.1,请检查faceletes选项。 我有一个类似的问题 h:outputScript not defined in library h

答案 1 :(得分:0)

您的链接指向 jsf-api.jar 。您还需要 jsf-impl.jar ,您可以在this directory找到它。

如果您在类路径中同时拥有这两者,则应该能够访问TLD。我认为没有jsf-impl.jar就无法使用jsf。

此外,您必须在页面中包含f:view标记的所有组件标记。所以你的页面应该有以下结构:

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

<f:view>
 <html>
  <body>
    <h:form>
      <h:panelGrid>
        <h:inputText value="#{dataTableBean.sponsorID}">
          <f:ajax event="keyup" />
        </h:inputText>
        <h:outputText id="text" value="#{dataTableBean.sponsorID}" />
      </h:panelGrid>
   </h:form>
  </body>
 </html>
</f:view>