【问题标题】:Is Facelets page generated to Servlet as JSP generated to ServletFacelets 页面是否像 JSP 生成到 Servlet 一样生成到 Servlet
【发布时间】:2012-10-21 20:05:36
【问题描述】:

由于所有 JSP 在执行之前都会生成/转换为 Servlet,Facelets 也是如此吗?

我正在使用 JSF 2.0 和 Facelets,想看看它生成的 Java 代码可能是 Servlet。

【问题讨论】:

    标签: jsf compilation facelets


    【解决方案1】:

    不完全一样,它被缓存了。但它不会生成 servlet 代码。

    【讨论】:

    • 请告诉我这个 xhtml 标签的 java 代码
    【解决方案2】:

    不,Facelets 文件使用SAX parser 解析为 XML 树。 XML 树存储在Facelet cache 中。 XML 树在view build time 期间变成了UIComponent 树,FacesContext#getViewRoot() 可以访问它(您可以在运行时通过getChildren() 遍历它)。组件树通常通过自己的encodeXxx() 方法或关联的Renderer 上的方法生成HTML 代码,以UIViewRoot#encodeAll() 开头。

    Facelets 文件生成任何类文件。 XML 树默认存储在服务器的内存中。但是,从 JSF 2.1 开始,您可以通过 <facelet-cache-factory>faces-config.xml 中指定自定义的 FaceletCache 实现,其中您可以编写代码以将 XML 树存储在例如磁盘文件系统上(不过会更慢)。

    如果你在视图中使用<ui:debug>并打开它,那么你可以看到UIViewRoot后面的组件树的文本表示。另见how to debug JSF/EL

    另见:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多