2011-08-17 49 views
1

我一直在一个问题上奋斗了几天,我不知道该怎么办才能使它工作。 我尝试使用与javascript一起工作的Tomahawk组件...并且我总是得到一个javascript错误:“xxx未定义”(例如xxx = orgApacheMyfacesPopup)。Myfaces2和Tomahawk2扩展过滤器

就我所知,它似乎是一个扩展过滤器问题:服务器无法提供包含所需定义的.js ......但我看不出有什么问题。

我刚从零开始做了一个使用eclipse的小项目,我总是得到错误。

我遵循的步骤是:

  1. 创建一个新的Web应用程序项目(靶向的Tomcat 6,增加了对JSF2.0下载Myfaces2支持)
  2. 下载和复制jsstl-API-1.2.jar和JSTL-IMPL-1.2.jar到WEB-INF/lib目录
  3. 下载战斧对JSF2和罐子复制到WEB-INF/lib目录
  4. 修改web.xml文件(如后交付)
  5. 创建的index.xhtml(如后交付)

我的web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> 
    <display-name>TestTomahawk</display-name> 
    <servlet> 
    <servlet-name>Faces Servlet</servlet-name> 
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>/faces/*</url-pattern> 
    </servlet-mapping> 
    <context-param> 
    <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name> 
    <param-value>resources.application</param-value> 
    </context-param> 
    <context-param> 
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name> 
    <param-value>client</param-value> 
    </context-param> 
    <context-param> 
    <param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name> 
    <param-value>true</param-value> 
    </context-param> 
    <context-param> 
    <param-name>org.apache.myfaces.PRETTY_HTML</param-name> 
    <param-value>true</param-value> 
    </context-param> 
    <context-param> 
    <param-name>org.apache.myfaces.DETECT_JAVASCRIPT</param-name> 
    <param-value>false</param-value> 
    </context-param> 
    <context-param> 
    <param-name>org.apache.myfaces.AUTO_SCROLL</param-name> 
    <param-value>true</param-value> 
    </context-param> 
    <listener> 
    <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class> 
    </listener> 

    <filter> 
    <filter-name>MyFacesExtensionsFilter</filter-name> 
    <filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class> 
     <init-param> 
     <param-name>uploadMaxFileSize</param-name> 
     <param-value>20m</param-value> 
    </init-param> 
    </filter> 

    <filter-mapping> 
    <filter-name>MyFacesExtensionsFilter</filter-name> 
    <servlet-name>Faces Servlet</servlet-name> 
    </filter-mapping> 

    <filter-mapping> 
    <filter-name>MyFacesExtensionsFilter</filter-name> 
    <url-pattern>/faces/myFacesExtensionResource/*</url-pattern> 
    </filter-mapping> 
</web-app> 

我的index.xhtml文件:

<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:ui="http://java.sun.com/jsf/facelets" 
     xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:f="http://java.sun.com/jsf/core" 
     xmlns:t="http://myfaces.apache.org/tomahawk" 
     xmlns:c="http://java.sun.com/jsp/jstl/core" 
     > 
    <body> 
     <h:form> 
      <t:popup styleClass="popup" 
        closePopupOnExitingElement="false" 
         closePopupOnExitingPopup="false" 
         displayAtDistanceX="0" 
         displayAtDistanceY="0" 
         > 
       <h:outputText value="test popup" /> 
       <f:facet name="popup"> 
        <h:panelGroup> 
         <h:outputText  value="foo"/> 
        </h:panelGroup> 
       </f:facet> 
      </t:popup> 
     </h:form> 
    </body> 
</html> 

有谁ansderstand为什么它不工作?

PS:我试着用Tomecat 7,并没有更好的工作......

感谢


没人? 有没有人让Myfaces2和tomahawk2与javascript和xhtml一起工作? 有人知道在哪里可以找到样品吗?关于MyFaces的网站 样品似乎针对JSF 1.1和JSP样的网页...

回答

1

你为了需要<h:head>而不是<head>为自动包含JavaScript(和CSS)所特有的JSF组件文件。此外,您最好还应该用<h:body>代替<body>

正确的facelet模板应该是这样的:

<!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" 
    xmlns:t="http://myfaces.apache.org/tomahawk"> 
    <h:head> 
     <title>Title</title> 
    </h:head> 
    <h:body> 
     <h1>Body</h1> 
    </h:body> 
</html> 
+0

非常感谢您! 你是对的! 现在效果更好。 – boblemar 2011-08-24 11:34:31