2014-10-08 92 views
0

我使用的Grails 2.3.4和mysql是mysql:mysql-connector-java:5.1.24'并有163个GSP文件,每次当我运行脚本war或任何其他创建war文件显示它下面的错误战争包装错误的Grails 2.3.4

.Error 
| 
WAR packaging error: encoded string too long: 70621 bytes 

并且没有超过64kb的任何gsp文件,并且我已经在buildconfig.groovy中评论了grails.project.fork但我仍然遇到问题请帮忙。

+0

也许有一个遗留物从先前的构建剩余。你是否尝试过所有的Grails?否则,您可以通过查看项目的工作目录并查看哪些文件实际正在编译,从而通过排除过程来确定哪个文件正在被打破。 – DanArl 2014-10-08 07:18:26

+0

我已经尝试过grails clean,但它不工作,在工作目录中只有101个gsp文件,但总体gsp文件是163.如何解决这个问题?请帮忙 – 2014-10-08 08:27:23

回答

1

我怀疑这是你想看到的答案:)我无法想象你有一个很好的理由可以接近GSP的最大尺寸。你甚至不应该知道这个数字是多少,只是它比你需要的要高。

在这些巨大的页面中,您已经有了大量的代码或者大量的HTML(或者两者兼有)。有很多明显的策略可以让你的GSP节食。使用taglibs将很多代码(不应该在GSP中使用,这不是PHP)从视图渲染层移出它所属的控制器和服务层。您可以将静态和大多数静态HTML块提取到包含/模板中。

这里可能还有很多重复的工作 - 如果没有大量的副本,很难获得这么多的文件。当文件变得非常大时,很难保持对什么地方的总体感 - 我们的大脑只能在超载之前处理一定数量的数据。你也倾向于开始错放小物件,并在那里部分吃午餐,这只会让事情变得更糟。

如果您没有时间进行重大重构,那么如果您远离了这个项目,甚至是简单地移动到标签库和模板而没有考虑正确设计工作,就会得到结果去。至少直到你再次达到极限:)

+0

谢谢你的回复,答案很有帮助。 – 2014-10-09 08:49:35