首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Liferay6.0.6/ JBOSS -如何在portlet中编辑JavaScript,而不需要不断地重新部署?

Liferay6.0.6/ JBOSS -如何在portlet中编辑JavaScript,而不需要不断地重新部署?
EN

Stack Overflow用户
提问于 2012-01-23 22:10:47
回答 2查看 5K关注 0票数 1

我正在尝试修复Liferay portlet中的一个棘手的JavaScript问题(碰巧也运行一个大型的Flex ),每次我进行更改时,我都必须返回到提示符,在portlet上执行"ant deploy“,然后等待它部署,然后重新加载页面,然后等待Flex应用加载。每次我尝试任何微小的改变,整个过程都需要3-4分钟。

有没有配置或设置可以解压JavaScript,让我可以直接在服务器上编辑JS文件,而不需要每次都重新部署?我读了一些关于“开发者模式”的文章,但它似乎不起作用,而且所有的Liferay文档似乎都是针对Tomcat的,而我使用的是JBoss。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-24 03:01:59

如果您正在部署一个war文件,只需在适当的位置(在jboss deploy目录中)将其解压即可,因此您将拥有一个名为FlexPort.war的目录,其中包含来自原始WAR文件的所有已解压内容,而不是一个名为FlexPort.war的压缩文件。

如果更新JavaScript文件,可能需要在浏览器中清除缓存,否则应立即生效。如果您更新类,您可以通过WAR/web-inf/web.xml文件的touch-ing快速重新部署。

===========================================================

我不确定为什么您看不到JS更新,但请尝试重现此序列。安装FirebugFiddler等浏览器工具会有所帮助,这样您就可以看到响应头。

  1. 将JS文件直接检索到您的浏览器中。例如,记录Last-Modified响应header.
  2. Modify JS文件并保存。(确保文件的文件系统时间戳再次changed)
  3. Retrieve了JS文件。Last-Modified响应头应该递增到与文件系统timestamp.
  4. Make的时间戳值相同的值。确保响应码是200,而不是304 (未修改)。

如果您在文件修改后仍然看到相同的时间戳:

  1. 它可能是浏览器缓存(参见上面的304评论)
  2. 我猜Liferay可能会缓存所有内容,所以在重新部署WAR之前,文件系统上的更改不会生效。如果是这种情况,请尝试对myportlet.war/WEB-INF/web.xml文件执行*touch*,这将导致WAR重新部署。虽然效率不是很高,但希望能比重新发出ant命令更快。

一个快速的谷歌透露了这个关于Liferay Static Content Caching的链接。似乎Liferay可能确实在ehcache中缓存了所有这些东西。如果您的portlet应用程序是这种情况,那么您有两个选择:

ehcache关闭缓存(当然,只在开发版本中)通过在你的portal-ext.properties:com.liferay.portal.servlet.filters.cache.CacheFilter=false

  • If Liferay注册接口中设置这个属性,你可以通过JMX-Consoletwiddle从缓存中移除目标项目。使用这两种方法中的任何一种,一旦确定了确切的操作,就可以创建一个批处理文件,以便在命令行上按需执行它。
票数 1
EN

Stack Overflow用户

发布于 2012-02-07 21:41:41

分解war文件对我来说不起作用。我通过使用node.js script(an http static file server)来解决这个问题。我所做的是在编辑JS时将此脚本复制到portlet项目内的javascript文件夹中,并启动服务器(您需要在开发机器上安装node.js )。然后,我将portlet中JS脚本的引用更改为指向静态服务器urls。例如:-在您的liferay portlet.xml中,

代码语言:javascript
复制
<footer-portlet-javascript>/js/app.js</footer-portlet-javascript>

更改为,

代码语言:javascript
复制
<footer-portlet-javascript>http://localhost:8888/app.js</footer-portlet-javascript>

之后,我可以只编辑文件,并立即在浏览器中查看更改。

(还需要在静态文件服务器中设置Access-Control-Allow-Origin头部)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8972937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档