【问题标题】:How Do Portlet-Bridge, Richfaces and ajax4jsf work together?Portlet-Bridge、Richfaces 和 ajax4jsf 如何协同工作?
【发布时间】:2010-10-01 14:21:13
【问题描述】:

我正在尝试使用JBoss Forumthe portlet bridge documentation 中所述的配置使Liferay 6.0、JBoss portlet bridge 2.0 和Richfaces 4.0.0 一起工作。我的目标是在实现 protlets 时使用 JSF 2.0。

我使用 maven 在 Liferay 中构建和部署 portlet,并像这样包含 Richfaces 依赖项:

<dependency>
  <groupId>javax.faces</groupId>
  <artifactId>jsf-impl</artifactId>
  <version>2.0.2-FCS</version>
</dependency>
<dependency>
  <groupId>org.jboss.portletbridge</groupId>
  <artifactId>portletbridge-api</artifactId>
  <version>2.0.0.CR1</version>
</dependency>
<dependency>
  <groupId>org.jboss.portletbridge</groupId>
  <artifactId>portletbridge-impl</artifactId>
  <version>2.0.0.CR1</version>
</dependency>
        <dependency>
            <groupId>org.richfaces</groupId>
            <artifactId>richfaces-bom</artifactId>
            <version>4.0.0.20100826-M2</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
<dependency>
  <groupId>com.sun.facelets</groupId>
  <artifactId>jsf-facelets</artifactId>
  <version>1.1.15.B1</version>
</dependency>

但是当我使用这个配置时,我得到了以下错误:

 SEVERE: Exception starting filter ajax4jsf
 java.lang.ClassNotFoundException: org.ajax4jsf.Filter
  at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1516)
  at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361)
  at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:269)
  at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
  at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
  at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3838)
[...]
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  at java.lang.reflect.Method.invoke(Method.java:597)
  at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
  at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

于是我又看了一下论坛,发现this post,在我看来,ajax4jsf 不需要在web.xml 和portlet.xml 中进行任何配置了。所以我把它扔了,得到以下错误:

[TomcatInstrumentableClassLoader@1738d88] error can't determine annotations of missing type org.ajax4jsf.renderkit.AjaxViewRootRenderer

现在我很困惑:我必须在 web.xml 中配置 ajax4jsf 吗?为什么 Liferay 找不到它?无论如何,这个模块有什么好处,JSF 2.0 实现还是richfaces 专有功能?

【问题讨论】:

    标签: richfaces jsf-2 liferay


    【解决方案1】:

    唯一支持 JSF 2 的 JBoss Portlet Bridge 版本是 alpha here。您可以使用 2.0.0.FINAL api jar 将 jar 放到您的 lib 文件夹中。此外,svn 中有一些基于 maven 的示例,它们具有 Liferay 配置文件“mvn package -Pliferay”。

    【讨论】:

    • 没有成功,我仍然得到同样的错误。你知道,如果我必须在 web.xml 中指定 ajax4jsf 过滤器,或者我可以省略它吗?
    • 另外,当我尝试通过 svn 和 maven 编译项目时,我收到错误消息:“[INFO] The specified web.xml file '/home/bme/Workspace/jboss-portletbridge-3.0. 0.ALPHA/examples/jsf2portlet/src/main/liferay/liferay-web.xml'不存在”。 web.xml 过时了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-04
    • 2021-12-09
    • 2019-04-21
    • 2014-08-05
    • 2020-01-14
    • 2012-12-21
    • 2013-01-19
    相关资源
    最近更新 更多