使用GroovyShell使用嵌入式代码评估java文件
我是一名web开发人员,最近在web应用程序中从使用PHP转向使用Java。我最终编写了自己的服务器应用程序,该应用程序可以使用未编译的groovy脚本轻松地进行扩展,我的服务器将通过groovy Shell进行评估——即foo.html.groovy
。直到今天,它的工作奇迹,我非常自豪我的结果。。。但是PHP脚本中有一点我非常怀念,那就是我希望在我的应用程序中实现,那就是在文件中嵌入编程语言代码的能力。我不仅因为说服而错过了它,还因为使用许多print
语句来输出html或类似的内容很快就会成为一种痛苦,更不用说Groovy不能很好地处理JavaScript代码,除非几乎所有内容都被转义了——即$ " '
PHP:
<p class="warning"><?php echo($result["error"]); ?></p>
甚至Ruby on Rails也提供了类似的.erb
文件,而且我可以想象Groovy中的一些东西会是这样的:
<p class="warning"><%= result.error %></p>
我只是好奇,是否有人知道这是否已经实现,或者是否可以效仿?当我第一次开发我的应用程序时,我曾尝试使用正则表达式过滤掉嵌入的代码,对其求值,然后将其替换回来,但这并不是100%完美的,而且调试任何代码错误都是一场噩梦,因为行号和列号从来都不准确。我也尝试过使用Quercus——它在Java中模拟PHP——但他们的项目太过时了,我很难找到文档或帮助。因此,任何解决方案的想法或方向都将受到高度赞赏
如果有人想看看我做了什么作为参考,here is my code repository at GitHub--FYI,我的应用程序有点过时了,需要对代码和结构进行一些彻底的修改
再次感谢您的帮助
# 1 楼答案
Grails(https://grails.org)框架允许这种模板化(还有许多其他功能)。它本质上是Groovy与Ruby-on-Rails的等价物(因此它以前被称为Groovy-on-Grails)
以下是他们的一个介绍性示例应用程序:
https://github.com/grails-samples/grails-petclinic
它允许您在
<table>
标记内执行以下操作:根据OP的评论进行编辑:
如果Grails太重并且与您当前拥有的内容不同,那么您可能需要尝试一下Groovy模板
这些是内置于语言中的,比Grails轻得多,与您提到的PHP样式和另一条评论中提到的JSP Scriplets更相似
这是Groovy doc中的示例: