为什么<f:ajax>标签在JSP中使用JSF2.0 </f:ajax>

时间:2012-03-10 11:14:21

标签: jsp jsf-2

我正在使用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

1 个答案:

答案 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>

另见: