对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库。
答案 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>