当前位置: 首页 > 知识库问答 >
问题:

Liferay和JSF2 Spring集成

宗政子琪
2023-03-14

我用Eclipse创建了一个新项目

源文档:jndi:/localhost/jsf测试portlet/WEB-INF/faces-config。xml原因:Class'org。springframework。网状物jsf。埃尔。SpringBeanFacesELResolver'缺少运行时依赖项:java。lang.NoClassDefFoundError:org/springframework/beans/factory/access/el/SpringBeanELResolver

如果我查看项目lib目录,jars已经就位,在生成的WAR中也是如此。所以我不知道问题可能源于哪里。

我的常春藤。xml

<?xml version="1.0"?>
<ivy-module
version="2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd"
>
<info module="portlet_primefaces_tmpl" organisation="com.liferay" />

<dependencies defaultconf="default">
    <dependency name="el-api" org="javax.el" rev="2.2" />
    <dependency name="jboss-el" org="org.jboss.el" rev="2.0.1.GA" />
    <dependency name="jsf-api" org="com.sun.faces" rev="2.1.21" />
    <dependency name="jsf-impl" org="com.sun.faces" rev="2.1.21" />
    <dependency name="liferay-faces-bridge-api" org="com.liferay.faces" rev="3.1.3-ga4" />
    <dependency name="liferay-faces-bridge-impl" org="com.liferay.faces" rev="3.1.3-ga4" />
    <dependency name="liferay-faces-portal" org="com.liferay.faces" rev="3.1.3-ga4" />
    <dependency name="liferay-faces-util" org="com.liferay.faces" rev="3.1.3-ga4" />
    <dependency name="primefaces" org="org.primefaces" rev="3.5" />
    <dependency org="org.springframework" name="spring-core" rev="3.2.1.RELEASE"/>
    <dependency org="org.springframework" name="spring-web" rev="3.2.1.RELEASE" />
</dependencies>

我的网络。xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app 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-app_2_5.xsd" version="2.5">

<context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
</context-param>
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/portlet-context.xml</param-value>
</context-param>
<context-param>
    <param-name>com.sun.faces.expressionFactory</param-name>
    <param-value>org.jboss.el.ExpressionFactoryImpl</param-value>
</context-param>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>

<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>*.xhtml</url-pattern>
</servlet-mapping>

<!-- Prevent direct access to Facelet view XHTML by the userAgent (browser). -->
<security-constraint>
    <web-resource-collection>
        <web-resource-name>Facelet View XHTML</web-resource-name>
        <url-pattern>*.xhtml</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>nobody</role-name>
    </auth-constraint>
</security-constraint>
<security-role>
    <role-name>nobody</role-name>
</security-role>

我的faces-config.xml

<?xml version="1.0"?>
<faces-config version="2.1" 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_2_1.xsd">

<lifecycle>
    <phase-listener>com.liferay.faces.util.lifecycle.DebugPhaseListener</phase-listener>
</lifecycle>
<application>
    <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
</application>

共有1个答案

贲永思
2023-03-14

通过分析演示中的WAR,我意识到其中有7个Spring jar,我将剩下的依赖项添加到我的ivy中。xml文件,然后是“清理/部署”,现在它可以工作了。也许并不是所有的罐子都是必需的,但这是下一步,去掉那些不必要的。

我的常春藤。xml现在看起来像这样:

<?xml version="1.0"?>
<ivy-module
version="2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd"
>

<info module="portlet_primefaces_tmpl" organisation="com.liferay" />

<dependencies defaultconf="default">
    <dependency name="jboss-el" org="org.jboss.el" rev="2.0.1.GA" />
    <dependency name="jsf-api" org="com.sun.faces" rev="2.1.21" />
    <dependency name="jsf-impl" org="com.sun.faces" rev="2.1.21" />
    <dependency name="liferay-faces-bridge-api" org="com.liferay.faces" rev="3.1.3-ga4" />
    <dependency name="liferay-faces-bridge-impl" org="com.liferay.faces" rev="3.1.3-ga4" />
    <dependency name="liferay-faces-portal" org="com.liferay.faces" rev="3.1.3-ga4" />
    <dependency name="liferay-faces-util" org="com.liferay.faces" rev="3.1.3-ga4" />
    <dependency name="primefaces" org="org.primefaces" rev="3.5" />
    <!-- Spring dependencies -->
    <dependency name="spring-core" org="org.springframework" rev="3.0.7.RELEASE"/>
    <dependency name="spring-web" org="org.springframework" rev="3.0.7.RELEASE" />
    <dependency name="spring-context" org="org.springframework" rev="3.0.7.RELEASE" />
    <dependency name="spring-beans" org="org.springframework" rev="3.0.7.RELEASE" />
    <dependency name="spring-expression" org="org.springframework" rev="3.0.7.RELEASE" />
    <dependency name="spring-aop" org="org.springframework" rev="3.0.7.RELEASE" />
    <dependency name="spring-asm" org="org.springframework" rev="3.0.7.RELEASE" />
</dependencies>

 类似资料:
  • 我试图在Liferay DXP(OSGi)中集成Apache POI,但无法解决与gradle项目中POI3.17版本的依赖关系。我用以下JAR创建了独立的项目: POI-3.17.jar POI-OOXML-3.17.jar POI-OOXML-schemas-3.17.jar xmlbeans-2.6.0.jar 通用集合4-4.1.jar 此外,我还在下面添加了build.gradle中添加

  • 我试图在Windows7上使用Tomcat7添加ApacheSolr4.6。 另外,我将solr,solrj和log4j添加到tomcat lib文件夹中。我复制了solr web porlet到增殖和尝试启动服务器,但我得到异常。 谁能告诉我这个错误是怎么回事吗。

  • Liferay Portal CE是坚如磐石的开源基础,在其之上有Liferay的数字化体验平台(DXP)。其提供了一个健壮的平台供你快速创建自己的网站并向所有客户端提供服务,包括桌面端,移动端,抑或介于其中。其提供了运行网站所需的所有标准应用,同时提供了拓展和客制化这些应用的简易途径。   主要特点如下: 1、提供单一登陆接口,多认证模式(LDAP或SQL); 2、管理员能通过用户界面轻松管理用

  • BitNami Liferay stack 是一个 Liferay 门户平台的简易安装包,包含预先配置好的运行版本,包括 Tomcat 和 MySQL 。用户可在数分钟内搭建一个完整的 Liferay 平台,支持跨平台。

  • 我使用Liferay portlet bundle 6.2(Tomcat)和Liferay IDE(eclipse)。我创建了两个Liferay插件项目。在第一个portlet(第一个插件portlet)中,我使用portlet首选项保存了一些数据。现在,我将在第一个portlet中显示第二个portlet。我怎么能做到?我找到了下面的代码和这个链接 从其他portlet打开portlet 但是,

  • 有没有办法为我在控制面板中创建的组织创建portlet? 肯定是这样的 我创建了组织层次结构,并使每件事都成为用户角色...等等 这可以通过钩子或什么来完成,请帮帮我?! 这个我已经试过了