JSF2内置了ajax支持错误:f:找不到ajax

时间:2012-02-06 10:19:39

标签: jsf-2

尝试过Mojarra - 2.0.8,2.1.6,MyFaces 2.0.11,2.1.5

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="w3.org/1999/xhtml" xmlns:f="java.sun.com/jsf/core" xmlns:h="java.sun.com/jsf/html" xmlns:ui="java.sun.com/jsf/facelets">
<body> 
   <h:form> 
      <h:inputText id="name" value="#{helloBean.name}"></h:inputText> 
      <h:commandButton value="Welcome Me"> 
         <f:ajax execute="name" render="output" /> 
      </h:commandButton> 
      <h2><h:outputText id="output" value="#{helloBean.sayWelcome}"/></h2> 
   </h:form>
 </body>
 </html>

1 个答案:

答案 0 :(得分:0)

XML命名空间无效。您已从其中删除了http://前缀。这不对。

这是重写:

<!DOCTYPE html>
<html lang="en" 
    xmlns="http://www.w3.org/1999/xhtml"
    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>Page title</title>
    </h:head>
    <h:body>
        <h:form> 
            <h:inputText id="name" value="#{helloBean.name}"></h:inputText> 
            <h:commandButton value="Welcome Me"> 
                <f:ajax execute="name" render="output" /> 
            </h:commandButton> 
            <h2><h:outputText id="output" value="#{helloBean.sayWelcome}"/></h2> 
        </h:form>
    </h:body>
</html>

请注意,您也忘记了<h:head>组件。这会生成一个HTML <head>元素,允许JSF自动包含必要的JS和CSS文件。如果是<f:ajax>,则需要(自动)包含JSF提供的jsf.js文件,否则在加载页面后您将面临JS错误。