【问题标题】:JSF 1.2 + JBoss 5 not rendering jsf tags.JSF 1.2 + JBoss 5 不呈现 jsf 标签。
【发布时间】:2012-12-01 16:57:18
【问题描述】:

我正在尝试将 .net 应用程序转换为 JSF 1.2 以放置在我们的旧版 JBoss 服务器上,但我无法获取要呈现的 jsf 标记。在我的浏览器中,我看到的正是我在 Eclipse 中看到的。

欢迎提出任何建议。

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_2_5.xsd" 
         version="2.5">
  <display-name>WebDataViewer</display-name>

    <context-param>
        <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
        <param-value>/WEB-INF/tlds/formatter-taglib.xml</param-value>
    </context-param>

    <!-- JSF -->
    <context-param>     
        <param-name>javax.faces.CONFIG_FILES</param-name>     
        <param-value>/WEB-INF/faces-config.xml</param-value>     
    </context-param> 

    <context-param>     
        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>     
        <param-value>.xhtml</param-value>     
    </context-param> 

    <context-param>     
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>     
        <param-value>server</param-value>     
    </context-param>  

    <context-param>
        <param-name>facelets.VIEW_MAPPINGS</param-name>
        <param-value>*.xhtml</param-value>
    </context-param>

    <context-param>
        <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
        <param-value>com.sun.facelets.FaceletViewHandler</param-value>
    </context-param>

    <context-param>
        <param-name>org.richfaces.SKIN</param-name>
        <param-value>CLASSIC</param-value>
    </context-param>

    <listener>     
        <listener-class>com.sun.faces.config.ConfigureListener</listener-class>    
    </listener>    

    <!-- Allows you to put html comments in your views without the compiler blowing up -->
    <context-param>
        <param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name>
        <param-value>true</param-value>
    </context-param>

    <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>*.jsf</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>index.xhtml</welcome-file>
    </welcome-file-list>
</web-app>

faces-config.xml

<?xml version="1.0" encoding="UTF-8"?>

<faces-config
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
    version="1.2">

    <application>
        <view-handler>org.ajax4jsf.application.AjaxViewHandler</view-handler>
    </application>

    <!-- Backing Beans -->  
    <managed-bean>
        <managed-bean-name>tableBacking</managed-bean-name>
        <managed-bean-class>edu.mayo.ccs.webdataviewer.ui.backing.TableLookupBacking</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>

</faces-config>

index.xhtml

<!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"
    xmlns:rich="http://richfaces.org/rich"
    xmlns:a4j="http://richfaces.org/a4j" 
    xmlns:ui="http://java.sun.com/jsf/facelets">

    <ui:composition template="/template.xhtml">

        <ui:define name="title">Web Data Viewer</ui:define>

        <ui:define name="centerColumn">
            <h1>Web Data Viewer</h1>                                
        </ui:define>

    </ui:composition>
</html>

【问题讨论】:

  • 为避免显而易见,您是通过/index.jsf/faces/index.xhtml 打开页面(以便根据其URL 映射调用FacesServlet)而不是/index.xhtml,对?
  • 我都试过了,结果都一样
  • 哦?那么/faces/index.xhtml也给出了原始源代码?
  • 投反对票,不评论为什么?
  • 不是我,但很可能是因为您的问题有点像一个轻松的“请调试我的代码”。无论如何,我仍然不确定。我最初怀疑 Facelets 配置。 facelets.VIEW_MAPPINGS 真的有必要吗?您是否将 Facelets 与 JSP 混合使用?我将首先创建一个完全空白的 Facelets 项目,其中包含绝对最少的 web.xml 和 faces-config.xml,并且没有任何 RichFaces 内容,基于Facelets 1.x' own docbook,然后让它运行。然后,逐步添加/配置 RichFaces,直到它崩溃。

标签: java jsf richfaces jsf-1.2


【解决方案1】:

根据 cmets,您在按照他们自己的 docbook 配置 Facelets 1.x 时遇到以下异常:

找不到完全合格的类:com.sun.facelets.FaceletViewHandler

显然,JBoss 5.x 没有附带 Facelets 1.x(可能非常好,因为它不是标准 Java EE 5 的一部分)。您需要自己在 webapp 的 /WEB-INF/lib 中提供。您可以从 Maven 存储库以及其他 here 获取它。这是jsf-facelets.jar 文件。

请注意,JSF 2.x 不需要此文件,因为 Facelets 库捆绑在 JSF JAR 本身中。

【讨论】:

  • 就是这样。我想我没有包括 facelets jar。我之前曾尝试使用您发布的 maven 链接,但在运行 maven install 时出现错误。它无法获得依赖 facelets.jar。不知道那里有什么交易。感谢您的所有帮助。
  • 所以再看了一遍,显然我的问题没有解决。我可以在我的 maven 依赖项中看到我有 jsf-facelets-1.1.15.jar 文件,但我仍然在我的 faces-config.xml 文件中看到错误 cannot find fully qualified class: com.sun.facelets.FaceletViewHandler
  • 抱歉,Maven 超出了我的范围。您需要确保的是,它将该 JAR 放入已构建 WAR 的/WEB-INF/lib 中。异常表明它不存在。如何告诉 Maven 这样做是一秒钟的事情。
  • 基本上我已经构建了我的项目,它已经拉入了 facelets.jar。这就是它显示在我的 Maven 依赖项文件夹中的原因。
  • 这个问题+答案可能会有所帮助,尽管&lt;compile&gt; 在这里发挥作用对我来说没有多大意义:stackoverflow.com/questions/2503880/…(我只是通过Googling 找到了你的确切错误消息以及关键字“Maven”)
猜你喜欢
  • 2012-03-22
  • 2011-02-15
  • 1970-01-01
  • 2018-01-08
  • 2015-03-29
  • 2013-04-21
  • 1970-01-01
  • 1970-01-01
  • 2011-06-19
相关资源
最近更新 更多