【发布时间】:2012-05-22 14:14:00
【问题描述】:
JSF 可以使用 JSP 作为视图定义语言。
根据我对 JSP 所做的理解是:它生成一个实现 servlet 接口的 java 类。当这个 servlet 被调用时,它会写入响应对象(即发送到 servlet 客户端)。
如果它只是写入响应对象,那么 UIViewRoot 是如何填充的?
渲染阶段怎么样,如果 JSP 已经写入响应,它还需要做什么?
【问题讨论】:
JSF 可以使用 JSP 作为视图定义语言。
根据我对 JSP 所做的理解是:它生成一个实现 servlet 接口的 java 类。当这个 servlet 被调用时,它会写入响应对象(即发送到 servlet 客户端)。
如果它只是写入响应对象,那么 UIViewRoot 是如何填充的?
渲染阶段怎么样,如果 JSP 已经写入响应,它还需要做什么?
【问题讨论】:
<f:xxx> 和 <h:xxx> 标签具有魔力。 <f:view> 标签代表UIViewRoot。此标记中的所有内容都由 JSF 渲染器处理,而不是由 JSP 处理。 JSP 只执行标记的主体,而标记主体又委托给所有 JSF 工作。 JSP 不会将普通标签打印到响应中(在浏览器中右键单击页面并执行 查看源代码,那里不应该有单个 JSF 标签,而只有它的 HTML 输出)。
要了解有关“自定义”JSP 标记的更多信息,请查看Java EE 5 tutorial。
请注意,在 JSP 的后续 Facelets 中,<f:view> 不是强制性的,它已被隐式使用。
【讨论】:
<view><h1></h1> </view><f:view> 之外的任何内容都由标准 JSP 编写器处理。