在 JSF中JSP扮演的角色

2008-02-23 09:14:52来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

JSF 应用程序需要某种显示技术, 例如JSP。JSP的酷特性之一是它能用定制标记扩展,一个定制标记就是在背后有Java代码支持的特殊 XML 元素。在JSP中除使用标准JSP元素或HTML元素之外还能使用定制标记。 定制标记几乎能做任何事情:显示变量的值,处理XML,有条件地显示页面的一部分,访问一个数据库,等等 (是否任何人都应该用JSP标记做所有的这些事情,那是将来的问题...). 他们主要的目的是将java代码从页面中分离并允许前台开发者用简单、熟悉的标记替代。一组有关系的定制标记构成一个标记库 JSF与JSP一起使用定制标记。 到目前为止,在这本书里我们已经示例过的所有JSF标记 —<h:inputText>, <h:outputText>, <h:form>, <f:view>, 等等—都是定制标记。 JSF 实现提供访问标准组件,绘制器,验证器和转换器的JSP定制标记,在下表中列出了这些标记库(JSF的JAR文件中包含了这些库)
URI 名称 前缀 描述 http://java.sun.com/jsf/core Core f Contains tags that are independent of a particular render kit (like <f:view>, <validator>, and so on) http://java.sun.com/jsf/html HTML h Contains tags for all of the standard components and the HTML render kit

所有这些标记库中的标记必须命名和以一种特殊的方式实现。 这种方式,能确保基于JSP的应用程序访问不同的JSF实现。大多数 IDEs 支持JSP,在极大程度上, JSF和JSP一起使用就象是使用JSF定制标记库。 然而,有一些你应该明白的细微差别, 例如象使用JSP includes。

Using JSP includes
JSP的关键特性之一是它能将多个JSP页面的内容包含到一个单一的JSP页面。 常使用这个特性执行一些有趣的任务如包含一个标题或页脚。 JSP 支持两种类型的 includes: 动态的和静态的。动态的包含 (用<jsp:include> 标记或 JSTL <c:import> 标记执行) 在运行时访问资源。在这种情形下, 控制转到被包含的JSP页,来自被包含页面的响应与包含页面的响应结合在一起。 当改变动态包含页的内容时,能自动显示新的变化,静态的包含在编译成java代码时已与包含页面的内容结合。本质上,这些被包含页面的内容被拷贝到了包含页。改变被包含页的内容一般不会自动显示新的变化,因为他们已经有了他们先前内容的拷贝。 只有重新编译新的内容才有正确的显示。 (JSP 2.0的 implicit includes, 能通过Web.xml配置, 它的处理方式象静态包含) JSF使用两种类型的JSP includes. 对于动态的includes, 有两个必要条件:

  1. 被包含的页面必须用JSF核心标记 <f:subview> 封闭。 <f:subview>标记可以用在被包含页面的内部。也可以用于封闭 include 语句。如下所示(这里是站长加的代码)
    <f:view>
    ...
    <f:subview id="header">
    <c:import url="header.jsp" />
    </f:subview>
    ...

    </f:view>

  2. 在被包含的JSP页面内的所有模板文本和非JSF 标记应该用 JSF核心标记 <f:verbatim>封闭;

所以,如果在一个JSP页面内我们有下列代码:

<f:view>
...
<jsp:include page="foo.jsp"/>
...
</f:view>

foo.jsp 应该象下面这样:

<f:subview>
<h:outputText value="heyah!"/>
...
<f:verbatim>
<b>Template text.</b>
<customtag:dothis/>
</f:verbatim>
</f:subview>

象你看到那样,整个被包含的页面封闭在一个 <f:subview> 标记内,所有的非JSF标记和模板文本被标记<f:verbatim>封闭。 作为选择,我们可以把<f:subview> 标记放入初始页封闭

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:使用Java中的final变量需要注意的地方。

下一篇:Tomcat简介