编程语言
首页 > 编程语言> > 如何在独立应用程序中使用Java Facelets作为通用模板引擎?

如何在独立应用程序中使用Java Facelets作为通用模板引擎?

作者:互联网

我想使用Facelets生成HTML内容.我想重用现有的taglibs,这是Velocity不支持的.

我已阅读开发人员的指南,但没有得到线索.

Facelets是否需要Java编译器才能工作? (我猜不是)我也试过Jetty ServletTester,但似乎不行.

那有可能吗?

解决方法:

是的,这是可能的.

没有必要使用Java编译器来呈现视图. Facelets完全由taglib驱动,模板脚本中可能只发生EL(表达式语言),因此不需要进行静态编译.

要将Facelets嵌入独立应用程序,您可以编程初始化servlet上下文.我在这种情况下使用Jetty.查看ServletTester类的实现,并编写自己的服务器.

值得一提的是jsf-ri不能正常工作,但是,幸运的是我们有另一种选择,我们可以使用更好的myfaces-impl.

主要问题仍然是ResourceResolver.如果您需要设置复杂的资源结构,即模板文件(xhtml)放在不同的位置,那么您需要:

>创建自己的ResourceResolver委托DefaultResourceResolver.
>覆盖org.mortbay.jetty.servlet.Context.getResource()以使其返回ResourceResolver的一致资源.或者类似的,如果嵌入式servlet上下文不是基于Jetty的.

标签:java,templates,facelets
来源: https://codeday.me/bug/20190710/1420294.html