﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-丄諦啲仇魜ヤ              -文章分类-JSF</title><link>http://www.blogjava.net/Crying/category/28927.html</link><description>
如 果 敌 人 让 你 生 气 , 那 说 明 你 没 有 胜 他 的 把 握！ 
</description><language>zh-cn</language><lastBuildDate>Fri, 14 Mar 2008 04:19:29 GMT</lastBuildDate><pubDate>Fri, 14 Mar 2008 04:19:29 GMT</pubDate><ttl>60</ttl><item><title>panelGrid  标签学习</title><link>http://www.blogjava.net/Crying/articles/185506.html</link><dc:creator>Crying</dc:creator><author>Crying</author><pubDate>Tue, 11 Mar 2008 14:50:00 GMT</pubDate><guid>http://www.blogjava.net/Crying/articles/185506.html</guid><wfw:comment>http://www.blogjava.net/Crying/comments/185506.html</wfw:comment><comments>http://www.blogjava.net/Crying/articles/185506.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Crying/comments/commentRss/185506.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Crying/services/trackbacks/185506.html</trackback:ping><description><![CDATA[这个标签可以用来作简单的组件排版，<span style="color: red">它</span><span style="color: red">会使用HTML表格标签来绘制表格</span>，并将组件置于其中，主要指定columns属性，例如设定为 2：<br />
&lt;h:panelGrid columns="2"&gt;<br />
&lt;h:outputText value="Username"/&gt;<br />
&lt;h:inputText id="name" value="#{userBean.name}"/&gt;<br />
&lt;h:outputText value="Password"/&gt;<br />
&lt;h:inputText id="password" value="#{userBean.password}"/&gt;<br />
&lt;h:commandButton value="submit" action="login"/&gt;<br />
&lt;h:commandButton value="reset" <span style="color: red">type="reset"/</span>&gt;<br />
&lt;/h:panelGrid&gt;<br />
则自动将组件分作 2 个 column来排列，排列出来的样子如下：<br />
<img height="75" alt="" src="http://www.blogjava.net/images/blogjava_net/crying/1.JPG" width="222" border="0" /><br />
<br />
&lt;h:panelGrid&gt;的本体间只能包括JSF组件，<span style="color: red">如果想要放入非JSF组件</span>，例如简单的样版（template）文字，则要使用 &lt;f:verbatim&gt;包括住，例如：<br />
&lt;h:panelGrid columns="2"&gt;<br />
<span style="color: red">&lt;f:verbatim&gt;</span>Username<span style="color: red">&lt;/f:verbatim&gt;<br />
</span>&lt;h:inputText id="name" value="#{userBean.name}"/&gt;<br />
&lt;f:verbatim&gt;Password&lt;/f:verbatim&gt;<br />
&lt;h:inputText id="password" value="#{userBean.password}"/&gt;<br />
&lt;h:commandButton value="submit" action="login"/&gt;<br />
&lt;h:commandButton value="reset" type="reset"/&gt;<br />
&lt;/h:panelGrid&gt;<br />
<br />
<br />
<br />
<span style="color: red">&lt;h:panelGroup&gt;</span><br />
这个组件用来将数个JSF组件包装起来，使其看来像是一个组件，例如：<br />
&lt;h:panelGrid columns="2"&gt;<br />
&lt;h:outputText value="Username"/&gt;<br />
&lt;h:inputText id="name" value="#{userBean.name}"/&gt;<br />
&lt;h:outputText value="Password"/&gt;<br />
&lt;h:inputText id="password" value="#{userBean.password}"/&gt;<br />
<span style="color: red">&lt;h:panelGroup&gt;</span><br />
&lt;h:commandButton value="submit" action="login"/&gt;<br />
&lt;h:commandButton value="reset" type="reset"/&gt;<br />
<span style="color: red">&lt;/h:panelGroup&gt;<br />
</span>&lt;/h:panelGrid&gt;<br />
在&lt;h:panelGroup&gt;中包括了两个&lt;h:commandButton&gt;，这使得&lt; h:panelGrid&gt;在处理时，<span style="color: red">将那两个&lt;h:commandButton&gt;看作是一个组件来看待，</span>其完成的版面配置如下所示：<br />
<img height="76" alt="" src="http://www.blogjava.net/images/blogjava_net/crying/2.JPG" width="262" border="0" /><br />
<br />
下面转载与<a style="color: red" href="http://blog.csdn.net/liyong1115/archive/2008/02/27/2125029.aspx">http://blog.csdn.net/liyong1115/archive/2008/02/27/2125029.aspx</a><br />
一、初识panelGrid和与之相关的设计元素<br />
<br />
　　<span style="color: #0000ff">panelGrid相当于HTML的表格</span>，<span style="color: #0000ff">在设计中与之相关的组件有panelGrop，与之相配合的CSS<br />
<br />
设计元素有styleClass、headerClass、footerClass、rowClasses、columnClasses。这些元<br />
</span><br />
<span style="color: #0000ff">素的有机组合，可以设计出不同的输出画面。<br />
</span><br />
　　在HTML网页设计中，表格有&lt;table&gt;&lt;tr&gt;&lt;td&gt;等标记符号，也可以在标记符号内嵌入CSS控<br />
<br />
制语句来控制输出的表现形式。<span style="color: #0000ff">JSF中的panelGrid虽然与HTML表格相对应，但是二者在设计时<br />
<br />
还是有很大差异的</span>。例如我们假设有一个HTML的表如下：<br />
<br />
&lt;table&gt;<br />
&nbsp;&nbsp;&lt;tr&gt;<br />
&nbsp; &nbsp; &lt;td&gt;...&lt;/td&gt;<br />
&nbsp; &nbsp; &lt;td&gt;...&lt;/td&gt;<br />
&nbsp;&nbsp;&lt;/tr&gt;<br />
<br />
&nbsp;&nbsp;&lt;tr&gt;<br />
&nbsp; &nbsp; &lt;td&gt;...&lt;/td&gt;<br />
&nbsp; &nbsp; &lt;td&gt;...&lt;/td&gt;<br />
&nbsp;&nbsp;&lt;/tr&gt;<br />
&lt;/table&gt;<br />
<br />
则panelGrid与之对应的标记是：<br />
<br />
&lt;h:panelGrid column="2"&gt;<br />
...<br />
...<br />
...<br />
...<br />
<br />
&lt;/h:panelGrid&gt;<br />
<br />
<span style="color: #0000ff">它只有外壳标记，没有行控制和列控制标记</span>。<br />
<br />
　　熟悉HTML编程的道人一眼就看出，只有外壳标记，你该怎样控制行或列的输出样式呢？别<br />
<br />
急，JSF设计者已经想到了，他们设计出<br />
<br />
了styleClass、headerClass、footerClass、rowClasses、columnClasses这些设计元素来控<br />
<br />
制行与列的输出样式，其中<br />
<span style="color: #0000ff"><span style="color: #808000">styleClass是格式表格总的外观的，如表格的长与宽、外边框样式、表格的背景样式等。<br />
headerClass、footerClass分别是控制表的header和footer的。<br />
rowClasses和columnClasses分别是控制表格的行与列样式的。<br />
</span></span><br />
　　还是举个例子说一下，我们有下例：<br />
<br />
&lt;h:panelGrid columns="1" cellpadding="5"<br />
&nbsp; &nbsp;&nbsp; &nbsp;styleClass="styleClazz"<br />
&nbsp; &nbsp;&nbsp; &nbsp;headerClass="headerClazz"<br />
&nbsp; &nbsp;&nbsp; &nbsp;footerClass="footerClazz"<br />
&nbsp; &nbsp;&nbsp; &nbsp;rowClasses="row1,row2"<br />
&nbsp; &nbsp;&nbsp; &nbsp;columnClasses="column1"<br />
&nbsp; &nbsp;&nbsp; &nbsp;&gt;<br />
<br />
&nbsp;&nbsp;&lt;f:facet &gt;<br />
&nbsp; &nbsp; &lt;h:outputText value="您好，朋友！"/&gt;<br />
&nbsp;&nbsp;&lt;/f:facet&gt;<br />
<br />
&nbsp; &nbsp; &lt;h:outputText value="您好，朋友！"/&gt;<br />
&nbsp; &nbsp; &lt;h:outputText value="您好，朋友！"/&gt;<br />
&nbsp; &nbsp; &lt;h:outputText value="您好，朋友！"/&gt;<br />
&nbsp; &nbsp; &lt;h:outputText value="您好，朋友！"/&gt;<br />
&nbsp; &nbsp; &lt;h:outputText value="您好，朋友！"/&gt;<br />
&nbsp; &nbsp; &lt;h:outputText value="您好，朋友！"/&gt;<br />
<br />
&nbsp;&nbsp;&lt;f:facet &gt;<br />
&nbsp; &nbsp; &lt;h:outputText value="您好，朋友！"/&gt;<br />
&nbsp;&nbsp;&lt;/f:facet&gt;<br />
&lt;/h:panelGrid&gt;<br />
<br />
　　这就是一个表格，columns="1"，规定这个表只有一列，cellpadding="5"说明了边框外线<br />
<br />
与内线的距离是5个像素。这个表由一个头部、一个尾部和中间表身三部分组成。headerClass<br />
<br />
是格式头部样式的，footerClass是格式尾部样式的，rowClasses和columnClasses是格式行与<br />
<br />
列样式的。 <span style="color: #ff0000">rowClasses="row1,row2"规定了表格的行与行交替使用row1和row2样式类来格式<br />
<br />
输出样式，</span>同样，列也是，并且还可以用3个、4个或更多个row3、row4...来依序交替格式输<br />
<br />
出样式。<br />
<br />
对应的样式类可以像以下这样编写在css文件中：<br />
<br />
<br />
/*styleClass处于父类的地位,headerClazz,rowClasses等的字体设置取em时,<br />
其在屏幕上显示的大小会参照该类字体的大小设置而放大或缩小*/<br />
<br />
.styleClazz{<br />
&nbsp;&nbsp;font-size:1em;<br />
&nbsp;&nbsp;color:blue;<br />
&nbsp;&nbsp;border-style:solid;<br />
&nbsp;&nbsp;border-color:red;<br />
&nbsp;&nbsp;border-width: 1px;<br />
}<br />
<br />
.headerClazz{<br />
&nbsp;&nbsp;background-color:#3F536B;<br />
&nbsp;&nbsp;font-family:宋体;<br />
&nbsp;&nbsp;font-size:1.5em;<br />
&nbsp;&nbsp;color:white;<br />
&nbsp;&nbsp;text-align:center;<br />
}<br />
<br />
.footerClazz{<br />
&nbsp;&nbsp;background-color:#3F536B;<br />
&nbsp;&nbsp;font-family:宋体;<br />
&nbsp;&nbsp;font-size:1.5em;<br />
&nbsp;&nbsp;color:white;<br />
&nbsp;&nbsp;text-align:center;<br />
}<br />
<br />
<span style="color: #ff0000">/* 当行样式与列样式都用时,则行样式服从于列样式<br />
边框的颜色需要在columnClasses中定义,<br />
在rowClasses中定义不起作用</span><br />
*/<br />
<br />
.row1{<br />
&nbsp;&nbsp;background-color:#FFFFFF;<br />
}<br />
<br />
.row2{<br />
&nbsp;&nbsp;background-color:#C9D3E0;<br />
}<br />
<br />
.column1{<br />
&nbsp;&nbsp;border-style:solid;<br />
&nbsp;&nbsp;border-color:red;<br />
&nbsp;&nbsp;border-width: 1px;<br />
}<br />
<br />
.column2{<br />
}<br />
<br />
<img height="205" alt="" src="http://www.blogjava.net/images/blogjava_net/crying/3.jpg" width="122" border="0" /><br />
你可以用CSS在JSP中的语法将其编写在JSP文件中。<br />
<br />
　　二、panelGrid如何来格式成具有拆分合并样式的表<br />
<br />
　　这要用到panelGroup，它的作用是将封装在内的元件作为一个元件来看待，如果panelGroup<br />
<br />
中封装了一个panelGrid，则被封装的表放在其他表中就相当于一个子表。通过panelGroup来封<br />
<br />
装各UI组件的办法，可以实现表格的拆分目的。<br />
<br />
&lt;h:panelGroup&gt;<br />
&nbsp;&nbsp;&lt;h:panelGrid&gt;<br />
&nbsp; &nbsp;...<br />
&nbsp;&nbsp;&lt;/h:panelGrid&gt;<br />
&lt;/h:panelGroup&gt;<br />
<br />
或者：<br />
<br />
&lt;h:panelGroup&gt;<br />
&nbsp; &nbsp; &lt;h:outputText value="您好，朋友！"/&gt;<br />
&nbsp; &nbsp; &lt;h:outputText value="您好，朋友！"/&gt;<br />
&lt;/h:panelGroup&gt;<br />
<br />
它们在容器中相当于一个显示元件(好像本来是一个人住一间房，现在是更多的人住一间房)。<br />
<br />
　　三、如何在panelGrid中实现设计元素对齐<br />
<br />
　　panelGrid是通过CSS语言来格式输出样式的，在CSS语言中可用vertial-align:...;来格<br />
<br />
式输出元素纵向对齐，使用text-align:...;来实现输出元素横向对齐。<span style="color: #ff0000">其中text-align有点<br />
<br />
迷糊人，因为从<span style="color: #0000ff">字面看它应该是针对文本的</span>，<span style="color: #0000ff">其实它对其他元素也起作用</span></span>。<br />
<br />
　　在对齐的设计中有个<span style="color: #ff0000">居中对齐的问题容易绕人</span>。在HTML中可用&lt;center&gt;...&lt;/center&gt;来实<br />
<br />
现被封装的视图元素居中，但在CSS中好像没有类似语句。其实还是有的，只不过绕了一个弯<br />
<br />
。你想啊，说到居中，那究竟是在多宽的范围内居中？是我这个元素在封装我的容器中居中，<br />
<br />
还是被我封装的元素在我这个容器中居中？这个问题CSS与HTML处理语义是不样的。<br />
<br />
在HTML中表格居中是：<br />
&lt;table align="center"&gt;<br />
...<br />
&lt;/table&gt;<br />
<br />
表格在这里的居中是指这个表格&#8220;我&#8221;在封装我的容器&lt;body&gt;中居中，具体表现为在屏幕上居<br />
<br />
中，但是您不能通过<br />
<br />
&lt;h:panelGrid align="center"&gt;<br />
...<br />
&lt;/h:panelGrid&gt;<br />
<br />
来实现panelGrid在&lt;body&gt;中居中。因为panelGrid标记根本不支持这个语句。还是要通过CSS<br />
<br />
来实现。下面这个使用CSS语句描述居中的语义与HTML使用align="center"语义不同。<br />
<br />
&lt;h:panelGrid style="text-align:center"&gt;<br />
&nbsp;&nbsp;&lt;h:outputText value="您好，朋友！"/&gt;<br />
&lt;/h:panelGrid&gt;<br />
<br />
这个语句说的是me这个对象在panelGrid 中居中，而不是指表格在&lt;body&gt;(屏幕)中居中。我<br />
<br />
要在屏幕中居中怎么办？有两种办法，一种是通过在&lt;body&gt;中加入格式说明，第二种办法是在<br />
<br />
panelGrid的外面再套一个panelGrid。即：<br />
<br />
<br />
&lt;h:panelGrid style="text-align:center;<span style="color: #ff0000">width=979px;"&gt;</span><br />
<br />
&nbsp;&nbsp;&lt;h:panelGroup&gt;<br />
&nbsp; &nbsp;&lt;h:panelGrid style="text-align:center"&gt;<br />
&nbsp; &nbsp; &lt;h:outputText value="您好，朋友！您好，朋友！"/&gt;<br />
&nbsp; &nbsp; &lt;h:outputText value="您好，朋友！"/&gt;<br />
&nbsp; &nbsp; &lt;h:outputText value="您好，朋友！"/&gt;<br />
&nbsp; &nbsp;&lt;/h:panelGrid&gt;<br />
&nbsp;&nbsp;&lt;/h:panelGroup&gt;<br />
<br />
&lt;/h:panelGrid&gt;<br />
<br />
这样就实现了被封装的panelGrid B 在 A 中居中，注意，<span style="color: #ff0000">这里的width=979px;是必须的，它<br />
<br />
规定了居中是在多宽的范围内居中！数字多少可以调整，但是你不能不写这个约定，否则，被<br />
<br />
封装在里面的panelGrid还是不会在屏幕上居中。<br />
</span><br />
　　还有一点注意，里面panelGrid B 的text-align继承外面panelGrid A 中的text-align属<br />
<br />
性的约定，即里面的panelGrid不写style="text-align:center"，对象me们也会在里<br />
<br />
面panelGrid中居中。但是里面的panelGrid不继承外面的width，像上面，里面panelGrid的显<br />
<br />
示宽度与最长的me1有关，而不是外面panelGrid A的宽度979px。<br />
<br />
　　四、其他<br />
　　■当屏幕的显式格式是1024 X 768 时，最外面的panelGrid宽度取979px是屏幕最大化时<br />
<br />
底部滚动条由出现到不出现的临界值，如超过979则滚动条就会出现。<br />
　　■可以按照是对&lt;table&gt;&lt;tr&gt;还是对&lt;td&gt;起作用的CSS类，进行封装。如写在style语句中<br />
<br />
，则形如下：<br />
<br />
&lt;h:panelGrid style="width:240px;vertial-align:top;text-align:center;"&gt;<br />
...<br />
&lt;/h:panelGrid&gt;<br />
&nbsp;<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/Crying/aggbug/185506.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Crying/" target="_blank">Crying</a> 2008-03-11 22:50 <a href="http://www.blogjava.net/Crying/articles/185506.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开始JSF理解先看的网站</title><link>http://www.blogjava.net/Crying/articles/181108.html</link><dc:creator>Crying</dc:creator><author>Crying</author><pubDate>Thu, 21 Feb 2008 09:30:00 GMT</pubDate><guid>http://www.blogjava.net/Crying/articles/181108.html</guid><wfw:comment>http://www.blogjava.net/Crying/comments/181108.html</wfw:comment><comments>http://www.blogjava.net/Crying/articles/181108.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Crying/comments/commentRss/181108.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Crying/services/trackbacks/181108.html</trackback:ping><description><![CDATA[<a href="http://blog.csdn.net/leeshaoqun/archive/2006/02/12/597506.aspx">http://blog.csdn.net/leeshaoqun/archive/2006/02/12/597506.aspx</a>&nbsp;&nbsp; 很多列子<br />
http://blog.csdn.net/liyong1115/category/365777.aspx<br />
<br />
<br />
<br />
<br />
<br />
努力打造一个创意的开源JSF组件包——Tcoco<br />
<a href="http://java.csdn.net/page/6554f876-684b-4a47-bf54-da858e3c2dd4">http://java.csdn.net/page/6554f876-684b-4a47-bf54-da858e3c2dd4</a><br />
<br />
<p>http://library.kingofcoder.com/books/java/7151242516599.pdf</p>
<p><br />
请问谁有比较好的AJAX4JSF参考手册<br />
http://livedemo.exadel.com/richfaces-demo/richfaces/commandLink.jsf 在线的</p>
<br />
<img src ="http://www.blogjava.net/Crying/aggbug/181108.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Crying/" target="_blank">Crying</a> 2008-02-21 17:30 <a href="http://www.blogjava.net/Crying/articles/181108.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>