我正在使用JSF2.0,我希望使用启用了ajax的组件创建JSP页面,这是JSF2.0中的内置组件,我确实对此进行了编码。
<?xml version="1.0" encoding="UTF-8"?>
<%@ 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 XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Insert title here</title>
</head>
<body>
<f:view>
<h3>JSF 2.0 + Ajax Hello World Example</h3>
<h:form>
<h:inputText id="sname" value="#{helloBean.name}"></h:inputText>
<h:commandButton value="Welcome Me">
<f:ajax execute="sname" render="output" />
</h:commandButton>
<h2><h:outputText id="output" value="#{helloBean.sayWelcome}" /></h2>
</h:form>
</f:view>
</body>
</html>
现在,当我尝试运行此代码时,我遇到以下错误:
org.apache.jasper.JasperException:/TestAjax.jsp(第22行,第7列)没有使用前缀“f”导入的标记库中定义的标记“ajax” org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:42) org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:408)
那么,请帮助我如何解决它?还有帮助我,JSP中是否允许使用标记? 提前致谢
我已经填写了以下jar文件: jsf-api,jsf-impl,jstl-api-1.2,jstl-impl-1.2
答案 0 :(得分:3)
JSF 2并不完全支持旧JSP。所有你得到的是JSF 1.2 fallback modus。你需要它的继承者Facelets。
将page.jsp
重命名为page.xhtml
并重新声明/重写文档,如下所示:
<!DOCTYPE html>
<html lang="en"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
>
<h:head>
<title>Insert title here</title>
</h:head>
<h:body>
<h3>JSF 2.0 + Ajax Hello World Example</h3>
<h:form>
<h:inputText id="sname" value="#{helloBean.name}" />
<h:commandButton value="Welcome Me">
<f:ajax execute="@form" render="output" />
</h:commandButton>
<h2><h:outputText id="output" value="#{helloBean.sayWelcome}" /></h2>
</h:form>
</h:body>
</html>