如何在独立应用程序中使用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