我正在使用带有GateIn 3.6的ext-js版本3.4(jboss为7)。在GateIn中,当GateIn处于生产模式时,某些ext组件不能正常工作(尤其是树)。我认为这个问题是由于javascript压缩机制造成的。我在GateIn 3.2中遇到了同样的问题然后我发现在GateIn 3.6中他们改变了java压缩机制(在这个GateIn中他们使用closure compiler)但仍然有相同的问题。 以下是我的问题,例如
我创建了两个包含树载荷相同代码的示例 Example 1: - 这里的ext js相关文件没有被压缩 Example 2: - 这里使用closure compiler来压缩ext js文件 (您可以通过将其部署到服务器(如wamp,xamp,jboss ......等)来运行上述两个示例。
在示例1中,可以展开树。但在第二种情况下(Example 2),树只扩展了第一级。是否有任何想法可以解决这个问题。
我无法在生产模式下直接指定ext js库而不进行压缩。因为在GateIn中,在gatein-resources.xml文件中指定了java脚本。在生产模式中,我认为默认情况下,GateIn使用闭包编译器压缩gatein-resources.xml中的文件。
答案 0 :(得分:1)
如果非压缩你的ext-js脚本是你的选择,你可以:
- 使用doHeaders方法添加脚本,而不是使用gatein-resources.xml:Remove duplicate header entries from doHeaders()
- 继续使用gatein-resources.xml导入javascripts,并通过在gatein / conf / controller.xml中添加一个路由(一个没有得到压缩参数的路由)来为压缩做一个例外:
<route path="/scripts/{gtn:version}/{gtn:scope}/">
<route-param qname="gtn:handler">
<value>script</value>
</route-param>
<path-param qname="gtn:version" encoding="preserve-path">
<pattern>[^/]*</pattern>
</path-param>
<route path="/{gtn:resource}{gtn:lang}-min.js">
<path-param qname="gtn:resource">
<pattern>(ext-core-debug)</pattern>
</path-param>
<path-param qname="gtn:lang" capture-group="true">
<pattern>-([A-Za-z]{2}(-[A-Za-z]{2})?)|</pattern>
</path-param>
</route>
</route>
<route path="/scripts/{gtn:version}/{gtn:scope}/">
<route-param qname="gtn:handler">
<value>script</value>
</route-param>
<path-param qname="gtn:version" encoding="preserve-path">
<pattern>[^/]*</pattern>
</path-param>
<route path="/{gtn:resource}{gtn:lang}{gtn:compress}.js">
<path-param qname="gtn:resource">
<pattern>.+?</pattern>
</path-param>
<path-param qname="gtn:lang" capture-group="true">
<pattern>-([A-Za-z]{2}(-[A-Za-z]{2})?)|</pattern>
</path-param>
<path-param qname="gtn:compress" capture-group="true">
<pattern>-(min)|</pattern>
</path-param>
</route>
</route>
调整gtn:resource param的模式以满足您的需求。 使用其中一个解决方案,除了您在模式中定义的脚本外,所有脚本都将缩小。