`
sanying123
  • 浏览: 16235 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

jsf panelGrid 和 panelGrou 学习

阅读更多
h:panelGrid、h:panelGroup标签学习2009-05-08 23:00这个标签可以用来作简单的组件排版,它会使用HTML表格标签来绘制表格,并将组件置于其中,主要指定columns属性,例如设定为 2:
<h:panelGrid columns="2">
<h:outputText value="Username"/>
<h:inputText id="name" value="#{userBean.name}"/>
<h:outputText value="Password"/>
<h:inputText id="password" value="#{userBean.password}"/>
<h:commandButton value="submit" action="login"/>
<h:commandButton value="reset" type="reset"/>
</h:panelGrid>
则自动将组件分作 2 个 column来排列,排列出来的样子如下:


<h:panelGrid>的本体间只能包括JSF组件,如果想要放入非JSF组件,例如简单的样版(template)文字,则要使用 <f:verbatim>包括住,例如:
<h:panelGrid columns="2">
<f:verbatim>Username</f:verbatim>
<h:inputText id="name" value="#{userBean.name}"/>
<f:verbatim>Password</f:verbatim>
<h:inputText id="password" value="#{userBean.password}"/>
<h:commandButton value="submit" action="login"/>
<h:commandButton value="reset" type="reset"/>
</h:panelGrid>



<h:panelGroup>
这个组件用来将数个JSF组件包装起来,使其看来像是一个组件,例如:
<h:panelGrid columns="2">
<h:outputText value="Username"/>
<h:inputText id="name" value="#{userBean.name}"/>
<h:outputText value="Password"/>
<h:inputText id="password" value="#{userBean.password}"/>
<h:panelGroup>
<h:commandButton value="submit" action="login"/>
<h:commandButton value="reset" type="reset"/>
</h:panelGroup>
</h:panelGrid>
在<h:panelGroup>中包括了两个<h:commandButton>,这使得< h:panelGrid>在处理时,将那两个<h:commandButton>看作是一个组件来看待,其完成的版面配置如下所示:


下面转载与http://blog.csdn.net/liyong1115/archive/2008/02/27/2125029.aspx
一、初识panelGrid和与之相关的设计元素

  panelGrid相当于HTML的表格,在设计中与之相关的组件有panelGrop,与之相配合的CSS

设计元素有styleClass、headerClass、footerClass、rowClasses、columnClasses。这些元

素的有机组合,可以设计出不同的输出画面。

  在HTML网页设计中,表格有<table><tr><td>等标记符号,也可以在标记符号内嵌入CSS控

制语句来控制输出的表现形式。JSF中的panelGrid虽然与HTML表格相对应,但是二者在设计时

还是有很大差异的。例如我们假设有一个HTML的表如下:

<table>
   <tr>
<td>...</td>
<td>...</td>
   </tr>

   <tr>
<td>...</td>
<td>...</td>
   </tr>
</table>

则panelGrid与之对应的标记是:

<h:panelGrid column="2">
...
...
...
...

</h:panelGrid>

它只有外壳标记,没有行控制和列控制标记。

  熟悉HTML编程的道人一眼就看出,只有外壳标记,你该怎样控制行或列的输出样式呢?别

急,JSF设计者已经想到了,他们设计出

了styleClass、headerClass、footerClass、rowClasses、columnClasses这些设计元素来控

制行与列的输出样式,其中
styleClass是格式表格总的外观的,如表格的长与宽、外边框样式、表格的背景样式等。
headerClass、footerClass分别是控制表的header和footer的。
rowClasses和columnClasses分别是控制表格的行与列样式的。

  还是举个例子说一下,我们有下例:

<h:panelGrid columns="1" cellpadding="5"
   styleClass="styleClazz"
   headerClass="headerClazz"
   footerClass="footerClazz"
   rowClasses="row1,row2"
   columnClasses="column1"
   >

   <f:facet >
<h:outputText value="您好,朋友!"/>
   </f:facet>

<h:outputText value="您好,朋友!"/>
<h:outputText value="您好,朋友!"/>
<h:outputText value="您好,朋友!"/>
<h:outputText value="您好,朋友!"/>
<h:outputText value="您好,朋友!"/>
<h:outputText value="您好,朋友!"/>

   <f:facet >
<h:outputText value="您好,朋友!"/>
   </f:facet>
</h:panelGrid>

  这就是一个表格,columns="1",规定这个表只有一列,cellpadding="5"说明了边框外线

与内线的距离是5个像素。这个表由一个头部、一个尾部和中间表身三部分组成。headerClass

是格式头部样式的,footerClass是格式尾部样式的,rowClasses和columnClasses是格式行与

列样式的。 rowClasses="row1,row2"规定了表格的行与行交替使用row1和row2样式类来格式

输出样式,同样,列也是,并且还可以用3个、4个或更多个row3、row4...来依序交替格式输

出样式。

对应的样式类可以像以下这样编写在css文件中:


/*styleClass处于父类的地位,headerClazz,rowClasses等的字体设置取em时,
其在屏幕上显示的大小会参照该类字体的大小设置而放大或缩小*/

.styleClazz{
   font-size:1em;
   color:blue;
   border-style:solid;
   border-color:red;
   border-width: 1px;
}

.headerClazz{
   background-color:#3F536B;
   font-family:宋体;
   font-size:1.5em;
   color:white;
   text-align:center;
}

.footerClazz{
   background-color:#3F536B;
   font-family:宋体;
   font-size:1.5em;
   color:white;
   text-align:center;
}

/* 当行样式与列样式都用时,则行样式服从于列样式
边框的颜色需要在columnClasses中定义,
在rowClasses中定义不起作用
*/

.row1{
   background-color:#FFFFFF;
}

.row2{
   background-color:#C9D3E0;
}

.column1{
   border-style:solid;
   border-color:red;
   border-width: 1px;
}

.column2{
}


你可以用CSS在JSP中的语法将其编写在JSP文件中。

  二、panelGrid如何来格式成具有拆分合并样式的表

  这要用到panelGroup,它的作用是将封装在内的元件作为一个元件来看待,如果panelGroup

中封装了一个panelGrid,则被封装的表放在其他表中就相当于一个子表。通过panelGroup来封

装各UI组件的办法,可以实现表格的拆分目的。

<h:panelGroup>
   <h:panelGrid>
...
   </h:panelGrid>
</h:panelGroup>

或者:

<h:panelGroup>
<h:outputText value="您好,朋友!"/>
<h:outputText value="您好,朋友!"/>
</h:panelGroup>

它们在容器中相当于一个显示元件(好像本来是一个人住一间房,现在是更多的人住一间房)。

  三、如何在panelGrid中实现设计元素对齐

  panelGrid是通过CSS语言来格式输出样式的,在CSS语言中可用vertial-align:...;来格

式输出元素纵向对齐,使用text-align:...;来实现输出元素横向对齐。其中text-align有点

迷糊人,因为从字面看它应该是针对文本的,其实它对其他元素也起作用。

  在对齐的设计中有个居中对齐的问题容易绕人。在HTML中可用<center>...</center>来实

现被封装的视图元素居中,但在CSS中好像没有类似语句。其实还是有的,只不过绕了一个弯

。你想啊,说到居中,那究竟是在多宽的范围内居中?是我这个元素在封装我的容器中居中,

还是被我封装的元素在我这个容器中居中?这个问题CSS与HTML处理语义是不样的。

在HTML中表格居中是:
<table align="center">
...
</table>

表格在这里的居中是指这个表格“我”在封装我的容器<body>中居中,具体表现为在屏幕上居

中,但是您不能通过

<h:panelGrid align="center">
...
</h:panelGrid>

来实现panelGrid在<body>中居中。因为panelGrid标记根本不支持这个语句。还是要通过CSS

来实现。下面这个使用CSS语句描述居中的语义与HTML使用align="center"语义不同。

<h:panelGrid style="text-align:center">
   <h:outputText value="您好,朋友!"/>
</h:panelGrid>

这个语句说的是me这个对象在panelGrid 中居中,而不是指表格在<body>(屏幕)中居中。我

要在屏幕中居中怎么办?有两种办法,一种是通过在<body>中加入格式说明,第二种办法是在

panelGrid的外面再套一个panelGrid。即:


<h:panelGrid style="text-align:center;width=979px;">

   <h:panelGroup>
<h:panelGrid style="text-align:center">
<h:outputText value="您好,朋友!您好,朋友!"/>
<h:outputText value="您好,朋友!"/>
<h:outputText value="您好,朋友!"/>
</h:panelGrid>
   </h:panelGroup>

</h:panelGrid>

这样就实现了被封装的panelGrid B 在 A 中居中,注意,这里的width=979px;是必须的,它

规定了居中是在多宽的范围内居中!数字多少可以调整,但是你不能不写这个约定,否则,被

封装在里面的panelGrid还是不会在屏幕上居中。

  还有一点注意,里面panelGrid B 的text-align继承外面panelGrid A 中的text-align属

性的约定,即里面的panelGrid不写style="text-align:center",对象me们也会在里

面panelGrid中居中。但是里面的panelGrid不继承外面的width,像上面,里面panelGrid的显

示宽度与最长的me1有关,而不是外面panelGrid A的宽度979px。

  四、其他
  ■当屏幕的显式格式是1024 X 768 时,最外面的panelGrid宽度取979px是屏幕最大化时

底部滚动条由出现到不出现的临界值,如超过979则滚动条就会出现。
  ■可以按照是对<table><tr>还是对<td>起作用的CSS类,进行封装。如写在style语句中

,则形如下:

<h:panelGrid style="width:240px;vertial-align:top;text-align:center;">
...
</h:panelGrid>

分享到:
评论

相关推荐

    jsf实例jsf实例 JSF学习 JSF jar包 JSF

    jsf实例 JSF学习 JSF jar包 JSF jsf实例 JSF学习 JSF jar包 JSFjsf实例 JSF学习 JSF jar包 JSF jsf实例 JSF学习 JSF jar包 JSF

    jsf jar包及学习文档

    jsf jar包及学习文档jsf jar包及学习文档jsf jar包及学习文档jsf jar包及学习文档jsf jar包及学习文档jsf jar包及学习文档jsf jar包及学习文档jsf jar包及学习文档jsf jar包及学习文档

    简单jsf程序 供新手学习

    这个压缩包“简单jsf程序 供新手学习”显然是为了帮助初学者入门JSF,通过实践来理解其基本概念和工作原理。 **JSF的核心组成部分**: 1. **组件库**:JSF包含一个丰富的UI组件库,如按钮、表单、输入字段等,这些...

    经典JSF网店模板开发学习

    JSF提供了多种布局组件,如`h:panelGrid`用于表格布局,`h:outputText`和`h:inputText`用于显示和获取用户输入。此外,还可以使用`ui:composition`和`ui:define`来实现模板和内容的分离,提高代码的复用性。 接着,...

    《JSF_实战》非常好的JSF学习书

    《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF学习书《JSF_实战》非常好的JSF...

    JSF学习

    在IT领域,尤其是Web开发中,JavaServer Faces(JSF)和Struts作为两种流行的框架,经常被开发者拿来比较。本文旨在深入探讨这两个框架,分析它们的特点、实施技巧以及选择标准,帮助读者理解在JSF发布后,Struts...

    JSF 学习资料大全

    **JSF(JavaServer Faces)** 是一个Java平台上的用户界面框架,主要用于构建Web应用程序。...所提供的文档如"JSF掀起你的盖头来"、"JSF袁红岗"和"JSF学习资料"将深入解析这些概念,为初学者提供宝贵的指导。

    JSF 入门学习资料

    作为初学者入门JSF,这份学习资料将为你提供基础到进阶的知识,帮助你理解并掌握JSF的核心概念和技术。下面,我们将详细讨论JSF的基本组成部分、工作原理,以及如何在Meclipse环境中进行开发。 首先,JSF的核心概念...

    JSF分页代码和学习文件1

    在“JSF分页代码和学习文件1”这个压缩包中,我们可以找到一些关于JSF分页功能的示例和学习资料。分页是Web应用中常见的功能,特别是在数据量较大的时候,为了提高用户体验,通常会将大量数据分成多个页面显示。JSF...

    IBM JSF学习资料

    IBM作为Java技术的重要贡献者和应用者,也提供了丰富的JSF相关的学习资源和工具。本资料集主要针对IBM的JSF实现进行深入探讨,适合对Java Web开发感兴趣的初学者以及有一定经验的开发者。 **1. JSF基础知识** JSF的...

    JSF学习资源(3本教材)

    JSF,全称为JavaServer Faces,是Java平台上用于构建用户界面的一种开源Web应用程序框架。它由Sun Microsystems...通过系统地学习和实践,开发者可以充分利用JSF的组件模型和强大的功能,提升开发效率,降低维护成本。

    JSF Java Server Faces (JSF)框架

    JSF是一种用于构建Java ... 包含JSP页面的JSF应用程序也使用由为了表现UI组件和在页面上的其他对象的JSF技术而定义的标准的tag库。 Java Server Faces技术的重要开发框架 sun-ri、myfaces、icefaces、richfaces、seam

    jsf、openJpa学习

    在“jsf学习”这个压缩包文件中,可能包含了关于JSF的基本教程、示例代码、整合OpenJPA和Spring的配置文件,以及相关的实践项目。学习这些内容可以帮助你深入理解JSF框架及其与OpenJPA和Spring的集成,从而提升你的...

    JSF学习,JSF标签使用

    JSF的学习入门知识教程,里面有例子还有各个标签的使用及属性介绍

    jsf介绍和例子

    4. ** Managed Beans** - JSF 中的主要业务对象,用于存储和管理应用程序的业务逻辑和状态。 5. **EL(Expression Language)** - EL是用于访问应用程序上下文中的属性和方法的简洁表达式语言,与JSF组件紧密集成。 ...

    JSF框架学习资

    总的来说,JSF框架通过`web.xml`和`faces-config.xml`的配置,结合其组件库和生命周期管理,提供了一种结构化的开发方式,使得开发者可以更加专注于业务逻辑,而不是底层的HTML和HTTP处理。通过理解和掌握这些配置,...

    jsf总结的学习资料

    **JSF(JavaServer Faces)** 是一个Java平台上的用户界面框架,用于构建Web应用程序。它简化了开发过程,提供了一种组件化和事件驱动的方式来...通过深入学习和实践,你可以掌握它的各种特性和技巧,提升Web开发能力。

Global site tag (gtag.js) - Google Analytics