ExtJs 与 Liferay集成的问题

问题描述

在一个简单的应用上,我尝试了在Liferay项目上使用ExtJs,然而出乎意料的是,页面总是报属性不被支持,也搜索过类似的报错问题,但都不能解决,网页上有朋友遇到属性不被支持是因为页面的body内有不在标签内的字符串,但排除这个问题后还是用不了Ext的东西, 贴上一个简单不能再简单的代码,ext的source code 放在liferay项目的/html/js下: <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" type="text/css" href="./ext/resources/css/ext-all.css"> <script type="text/javascript" src="./ext/adapter/ext/ext-base.js"></script> <script type="text/javascript" src="./ext/ext-all-debug.js"></script> <title>A xxxxx</title> </head><script type="text/javascript"> ExtJsCustom = function(){ Ext.MessageBox.confirm("DCMS","Do you want to override,are you sure?",function(btn){ alert("1233"); }); }</script><body><input type="button" value="Animal" id="fly" onclick="ExtJsCustom();"/></body>引用路径不存在问题,在Liferay项目上就是用不了,是否还需要别的配置,还请用过的大牛们指点,thanks!

解决方案

我刚才测试了一下,可以使用extjs 4,liferay 6.0.6+说一下我的方法:1、将extjs的资源拷贝到portlet项目的docroot/js中2、参考如下测试代码<%@page import="com.liferay.portal.kernel.util.WebKeys"%><%@page import="com.liferay.portal.model.Portlet"%><%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %><portlet:defineObjects /><%Portlet portlet = (Portlet)request.getAttribute(WebKeys.RENDER_PORTLET);%><link rel="stylesheet" type="text/css" href="<%= portlet.getContextPath() %>/js/ext/resources/css/ext-all.css"><input type="button" value="Animal" id='<portlet:namespace/>fly' onclick="<portlet:namespace/>ExtJsCustom();"/><script type="text/javascript" src="<%= portlet.getContextPath() %>/js/ext/bootstrap.js"></script><script type="text/javascript"><portlet:namespace/>ExtJsCustom = function(){Ext.MessageBox.confirm("DCMS","Do you want to override,are you sure?",function(btn){alert("1233");});}</script>
解决方案二:
Portal引用资源跟普通的jsp不一样,需要加上contextPath,而且为了避免对象冲突,最好给js调用的对象加上namespace,例如:<input type="text" id="<portlet:namespace/>MyText"/>document.getElementById('<portlet:namespace/>MyText');而且你这样写也不规范啊,portlet是没有body的,直接作为html的片段被解析上去的。

时间: 2024-09-09 04:31:35

ExtJs 与 Liferay集成的问题的相关文章

Liferay集成CAS实现单点登录与应用系统集成

Liferay 门户介绍 Liferay 是一个基于 J2EE 架构的完整的门户解决方案,使用了 EJB.JMS 等技术,前台界面 使用了 Struts MVC 框架.模板技术等一些开源的主流技术,基于 XML 的 portlet 配置文件可以自由地动态扩展,使用了 Web Services 来支持一些远程信息的获取,使用 Lucene 实现全文检索功能. 主要特点: 采用最先进的技术 Java, EJB, JMS, SOAP, XML. 提供多种单点登陆接口,如 CAS,LDAP, OpenI

jsamine单元测试框架和ext-js框架集成

最近研究了下jasmine框架,收益颇丰.基于公司一位同事的文档,我这里列举下jasmine框架的一些特征. 一:介绍 Jasmine框架是一个行为驱动的开发框架,用于测试javascript代码,它不会依赖于任何其他的javascript框架,也不需要一个DOM,并且它有非常简单和清晰的语法. 二:适用范围 因为Jasmine框架不依赖浏览器,DOM,或者任何javascript框架,所以它特别适合单元测试网站,Node.js项目或者任何有javascript运行的项目. 小例子1:比如要测试

打通.NET 3.5与ExtJS数据交互的任督二脉

ExtJS是一套非常好的UI框架,已经有越来越多的企业级应用程序使用上了这 个框架而从中受益.然后,在众多的项目当中,以J2EE项目居多,原因是ExtJS 与Java的集成化越来越强.而对于使用.NET平台的开发者来说,想要在自己的项 目当中使用ExtJS却困难重重,原因在于数据通信很难达到统一.在.NET 3.5以 前,.NET平台提供有限的JSON原生支持.因而很多程序员都是使用第三方的组件 .例如LitJson.net组件. 在.NET 3.5中,框架提供了 DataContractJso

在liferay中用serveResource解决跨域访问问题

简介: 众所周知,跨域问题是十分常见的需求,比如让客户端的ext-js控件可以渲染来自服务器端的json对象.我们可以用很多很多方法来解决,比如jsonP.但是,在liferay中,我们可以用serveResource方法来优雅的解决跨域访问问题. 白板分析: 以下是摘自我在技术讨论会上的白板: 解决方法: 首先编写一段serveResource方法,让其和远端的json对象打交道,它作为中间层可以封装来在远程的json资源,然后提供给本域内的ext-js代码来渲染. 当然了,这里我们的资源必须

Liferay Hook使用范例

今天UI组有个需求,需要把Liferay的默认的header改为自定义的header,并且用ext-js来展示动态header的效果,于是我们想到了用Liferay Hook的功能. 展示效果 初始状态: 当鼠标滚轮往下滚动时候,header会缩成一条横杠: 开发"> 当鼠标滚轮往上滚动时,header会恢复为初始状态: 实现: 为了实现这个功能,我们必须创建一个Liferay Hook功能, 然后我们在META-INF下创建一个目录叫modify_liferay_defaults作为我们

ExtJs学习笔记(20)-利用ExtJs的Ajax与服务端WCF交互

ExtJs是一套非常不错的javascript UI库(第一次接触ExtJs的,可到官方网站http://www.extjs.com/deploy/dev/examples/samples.html看下示例.相信不少人会心动的),不仅组件丰富,效果漂亮,而且ExtJs集成的Ajax功能可以方便的与.Net的WCF进行交互. 这里我们将演示ExtJs的FormPanel从WCF加载数据,以及如何提交数据到WCF服务端 1.首先来定义一个用于传输信息的Class(实际开发中,可以是Linq to S

SilverlightComponent for ExtJS

最近需要把Silverlight和ExtJS集成起来,索性就写了一个SilverlightComponent组件,使用这个组件可以很方便的把Silverlight控件集成进ExtJS框架之中.下面这两幅图是最终效果: Silverlight控件很容易的嵌入Ext.Window 支持Silverlight控件被HTML覆盖

在Liferay中加入自定义的js库文件

在Liferay中,如果我们要让服务器上使用自己的js库(比如ext-js库)而不是使用默认的aui库,可以按照下面的步骤做: (1)放置库文件 我们到$liferay_home/tomcat-7.0.23/webapps/ROOT/html/js 目录下建一个目录叫extjs,然后把ext-all.js复制进去. (2) 在$liferay_home目录下创建portal-ext.properties ,然后从portal-impl.jar 包中的portal.properties中吧java

ExtJs 备忘录(1)—— Form表单(一) [ 控件使用 ]

前言 ExtJS接触至今已有4个月(5.1 - 9.1),小有心得,由于公司短期内并没有打算采用,所以备忘之以备他日之需.虽然网上资料不少,但学起来仍感费劲,所以还是想以自己的方式来与众分享. 系列 1. ExtJs 备忘录(1)-- Form表单(一) [ 控件使用 ] 版本 Ext 3.0.0 正文 一.效果图 先用美图勾引那些驻足观望之人: 二.代码讲解 如果项目中大量采用ExtJS做前端,我建议采用PageBase方式来引用和使用它. 2.1 目录结构 项目中使用Ext并不需要把整个Ex