问题的具体详情和这位老外描述是一样的
http://forum.springsource.org/showthread.php?t=67257
即抛出异常
引用
java.lang.IllegalStateException: WebApplicationObjectSupport instance [org.springframework.web.servlet.view.velocity.Velo cityView: name 'view'; URL [/WEB-INF/velocity/view.vm]] does not run within a ServletContext. Make sure the object is fully configured!
最后跟调试(关于Liferay远程调试Java Remote Debug和热部署HotDeploy的Eclipse开发环境配置有空再写上来)跟代码发现
if (servletContext == null && isContextRequired()) {
throw new IllegalStateException("WebApplicationObjectSupport instance [" + this +
"] does not run within a ServletContext. Make sure the object is fully configured!");
}
这里抛出的,
isContextRequired(),这个方法返回的是true(被VelocityView的父类AbstactTemplateView重写了)
一开始我以为getServletContext()==null 我一直以为是Liferay Portal的原因,所以就没考虑从这里解决问题.
我尝试写一个VelocityView的子类MyVelocityView,把isContextRequired()重写成return true;来尝试是否能恢复
但是重写后仍然调用VelocityView而不是MyVelocityView,开始怀疑是否是liferay自带的spring的加载顺序优先与自己项目的.(呃 具体说不清原理,感觉有这可能,有看客讲得清的欢迎斧正)
然后再看spring配置,突然发现没有配置Listener
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/{你配置文件名}.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
加上后问题解决了,因为这下getServletContext()!=null 了
==========回顾问题=================
为什么没有用velocity前,我的spring(IoC/MVC)作用正常呢
1.因为liferay会吧/WEB-INF/{你的portlet名称}-portlet.xml当作spring的Context加载进去
所以spring的运作正常
2.因为之前我用的是InternalResourceViewResolver,而它的isContextRequired() return false.
===========问题小总结================
记得web.xml里要配置好ContextLoaderListener
对于Portal来说ViewRendererServlet必须的,用来复用spring MVC的视图处理
=========篇外话===============
此外, 发现Spring-referrance中有一处小Typo错误哈
Chapter 16.4 Velocity & FreeMarker -- Contextconfiguration
代码下面有行小字
引用
Note
Fornonweb-appsadda VelocityConfigurationFactoryBean ora
FreeMarkerConfigurationFactoryBean toyourapplicationcontextdefinitionfile.
其中VelocityConfigurationFactoryBean 应该是写错了 没有这个类(FreeMarkerConfigurationFactoryBean )倒是有的
正确的应该是VelocityEngineFactoryBean
热烈欢迎对本文任何错误含糊之处斧正拍砖!
分享到:
相关推荐
Liferay Spring Portlet MVC 使用 Maven 的 Liferay Spring Portlet MVC 项目模板。 Liferay EE 6.2.10.11 (GA1, SP710) Java 1.7 小门户 2.0 弹簧框架 4.1.5 基于注解的控制器配置 用法 $ git clone ...
在这个开发实例中,我们将深入探讨四个Liferay Portal MVC(Model-View-Controller)应用的实践案例,这些实例可以帮助开发者更好地理解如何在Liferay环境中进行portlet开发。 首先,让我们了解MVC模式在Liferay中...
**Liferay Portal 开发大全** Liferay Portal 是一个开源的企业级门户平台,广泛用于构建复杂的Web应用程序和企业内部协作系统。它提供了丰富的功能,包括内容管理、社交媒体集成、工作流支持以及用户界面定制。本...
Liferay Portal 6基于Java语言开发,采用了Spring框架和Hibernate持久层框架,提供了稳定、高效的服务。平台采用模块化设计,各个组件之间通过清晰的接口进行通信,便于维护和升级。此外,Liferay Portal 6支持多种...
本文档旨在指导开发者如何进行 Portlet 的开发并部署在 Liferay Portal 上。 #### 二、Portlet 开发与 Servlet 开发对比 1. **Portlet 开发**: - **标准性**:遵循 JSR-168 规范,使得 Portlet 可以跨平台部署。...
在“源码”这个标签下,讨论可能涉及Liferay的源代码分析、自定义开发或者调试。Liferay是用Java语言编写,并且基于Spring框架,所以开发者需要对Java和Spring有深入理解。如果你正在尝试修改或扩展Liferay的功能,...
在Liferay Portal中,文档管理主要通过【Document Library】Portlet实现。用户可以方便地上传文档,如在文件夹内点击【Add Document】,选择本地文件上传。值得注意的是,上传的文档大小通常有3000KB的限制。文档...
根据提供的文件信息,我们可以提炼出关于《Liferay Portal Systems Development》这本书的以下知识点。 首先,这本书主要介绍如何在Liferay门户平台上构建动态的、内容丰富的、具有社交功能的系统。Liferay Portal...
在此背景下,校园信息门户(Campus Information Portal)作为一种有效的解决方案应运而生,旨在通过单一入口提供定制化的信息和服务,极大地提高了信息获取的便捷性和用户体验。 #### 二、数字化校园与校园信息门户...
Using Liferay Portal 6.1
- **Portal服务器**:是提供用户界面、整合各种应用和服务的平台,Liferay Portal就是这样的一个服务器,它能够聚合来自不同源的信息并提供统一的访问入口。 - **Portlet容器**:是portal服务器的一部分,负责管理...
### Liferay Portal 二次开发指南 #### 一、Liferay Portal 架构解析 ##### 1.1 Portal规范 Liferay Portal遵循了两种主要的门户规范:JSR 168 和 WSRP (Web Services for Remote Portlets)。JSR 168是一个Java...
8. **设置门户扩展属性**:在`liferayPortal/src`目录下创建`portal-ext.properties`文件,内容应包含`portal.release=professional`,这用于定义门户的发布类型。 9. **配置JRE与Tomcat**:在Eclipse的“首选项”...
下面我们将详细探讨这些技术以及它们在整合中的作用。 **Liferay** 是一款开源的企业级门户平台,用于构建数字体验和协作平台。它提供了丰富的功能,如内容管理、社交媒体集成、工作流支持等,同时具有良好的可扩展...
1. **安装脚本**:通常在安装或更新Liferay Portal时,会有一系列的SQL脚本用于创建必要的数据库结构,包括表、视图、存储过程等。 2. **升级脚本**:随着Liferay版本的升级,这些脚本可能用于将现有数据库从一个...
通过上述介绍,我们可以看到Liferay Portal不仅是一个强大的企业门户解决方案,还为企业提供了灵活的集成、定制和扩展能力,以满足不同业务场景下的需求。无论是对于个人用户还是企业用户,Liferay Portal都能够提供...
Liferay Portal Liferay IDE
单击 Windows->Preferences,选择 Liferay->installed Plugin SDKs,单击 Add… 按钮,出现下图,填写 sdk 的 location 和 name,文件夹 D:\liferay\liferay-plugins-sdk-6.1.1 为前面下载的文件 liferay-plugins-...
《LifeRay Portal 6.0.6 学习手册》是一份针对LifeRay Portal初学者的详细教程,旨在帮助读者深入了解和掌握LifeRay Portal的使用和开发。下面将对其中的关键知识点进行深入探讨。 1. **LifeRay Portal初体验** ...
关于liferay portal介绍的ppt