一尘不染

如何在sitebricks中实现对jsp的注释支持?

jsp

这是SiteBricks用户指南中的示例:

<html>
<body>
    @ShowIf(true)     <----- I'm impressed with this line
    <p>${message} from Sitebricks!</p>
</body>
</html>

我很好奇它是如何实现的?(我的意思是站点砖创建者如何以及在哪个切入点设法将jsp转换为servlet?)

感谢您的任何想法!


阅读 253

收藏
2020-06-10

共1个答案

一尘不染

没有过滤器执行此操作。我们有自己的模板逻辑,使用的是递归下降解析器。

完成这种注释解析实际上不是一个简单的问题。我们首先要做的是使用Jsoup将整个HTML像DOM一样树化。Jsoup负责将HTML规范化为类似XML的结构(尽管不完全一样)。

然后,我们将这棵树下放,并构建一个并行的“渲染器”树作为Java对象。每个渲染器都有能力执行特定的操作,即吐出HTML,显示值是否为真等。鉴于渲染器树与HTML树匹配,如果ShowIf返回false,我们也将其下面的整个分支都删除。

在页面嵌入方面,还有一些更复杂的事情在进行,等等,但这就是要旨。感谢您的客气话!

Dhanji,Sitebricks和Guice Servlet的创建者。

2020-06-10