`
sanying123
  • 浏览: 15804 次
  • 性别: 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程序 供新手学习

    简单jsf程序 供新手学习简单jsf程序 供新手学习简单jsf程序 供新手学习简单jsf程序 供新手学习 简单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的学习知识点,是学习jsf入门的基础

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

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

    经典JSF网店模板开发学习

    经典JSF网店模板开发学习经典JSF网店模板开发学习catalog

    jsf学习资料jsf学习资料

    jsf学习资料

    JSF Java Server Faces (JSF)框架

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

    jsf总结的学习资料

    jsf总结的学习资料jsf总结的学习资料jsf总结的学习资料jsf总结的学习资料

    JSF学习

    学习JSF的好文档(英语版本)

    JSF学习,JSF标签使用

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

    JSF学习笔记

    JSF学习笔记JSF学习笔记JSF学习笔记

    JSF 学习资料大全

    里面包含JSF新手需要的学习资料,包括业内人士对JSF的评价,还有所需的流行开发工具的介绍,文档格式均为word,希望对大家有帮助

    JSF框架学习资

    JSF框架学习资:这学习资料是我学习时笔记有不正确的地方请指出,方便我改正!

    JSF/Facelets/xhtml学习

    JSF/Facelets/xhtml学习

    JSF 课程学习资源 ppt

    JSF 课程学习资源 ppt JSF 课程学习资源 ppt

    最简单的JSF程序,用于学习JSF

    最简单的JSF程序,解压后放在tomcat的webapps目录下,然后在IE地址输入http://localhost:8080/jsftest/index.faces,程序的详细说明见:http://blog.csdn.net/lewutian/archive/2009/06/20/4285122.aspx

    JSF入门级资料 学习笔记

    您是否在从事Web项目的开发? 如果是,您是否遇到过如下的问题: ... 2.多用户访问时,需要处理线程安全、数据验证、转换处理等问题。 3.展示逻辑和处理逻辑胶合在...本文是JSF入门资料的学习笔记,或许对您有一些帮助。

    JSF2学习用范例

    该范例为JSF2基础范例工程,分10类.适合初学者学习。 在weblogic9 tomcat5-7 JDK1.5测试通过 weblogic9和tomcat5需要el.jar支持,已经在文件夹中标明,只需放入lib目录下即可 需要注意的是weblogic9和tomcat5支持的...

    JSF分页代码和学习文件1

    没日没夜整了几天JSF,深感JSF 很不习惯,理解大家的辛苦,特此提供部分学习代码。期望中国开源更强大

Global site tag (gtag.js) - Google Analytics