﻿<?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-gembin-随笔分类-JSF</title><link>http://www.blogjava.net/gembin/category/29811.html</link><description>OSGi JSF Eclipse RCP</description><language>zh-cn</language><lastBuildDate>Tue, 27 May 2008 09:35:57 GMT</lastBuildDate><pubDate>Tue, 27 May 2008 09:35:57 GMT</pubDate><ttl>60</ttl><item><title>JSF KickStart: A Simple JavaServer Faces Application</title><link>http://www.blogjava.net/gembin/archive/2008/05/27/203204.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Tue, 27 May 2008 05:42:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2008/05/27/203204.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/203204.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2008/05/27/203204.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/203204.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/203204.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: A Simple JavaServer Faces Application&nbsp;&nbsp;<a href='http://www.blogjava.net/gembin/archive/2008/05/27/203204.html'>阅读全文</a><img src ="http://www.blogjava.net/gembin/aggbug/203204.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2008-05-27 13:42 <a href="http://www.blogjava.net/gembin/archive/2008/05/27/203204.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何使用JSF FacesContext  </title><link>http://www.blogjava.net/gembin/archive/2008/05/08/199258.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Thu, 08 May 2008 07:21:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2008/05/08/199258.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/199258.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2008/05/08/199258.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/199258.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/199258.html</trackback:ping><description><![CDATA[在Faces API中有两个类是要经常使用的. 一个是FacesContext 一个是ExternalContext, 本篇文章讲解如何使用前者, 在下面的一篇文章中在继续讲解任何使用后者:
<br />
<br />
对每个JSF请求，FacesServlet对象都会为其获取一个javax.faces. context.
FacesContext类的实例。<br />
FacesServlet对象将下列3个取自Web容器的对象传给javax.faces.context.FacesContextFactory对象的getFacesContext方法，以此来做到这一点：
<br />
<br />
● javax.servlet.ServletContext<br />
● javax.servlet.ServletRequest<br />
●
javax.servlet.ServletResponse<br />
这意味着FacesContext的实例里包含了所有处理JSF请求所需的每个请求的状态信息。<br />
&nbsp;FacesContext实例及其封装的对象<br />
&nbsp;获取当前实例一个经常用到的方法是静态的getCurrentInstance方法，它返回当前的FacesContext实例。<br />
此方法的签名如
下：public static FacesContext
getCurrentInstance()<br />
<br />
下面的代码是一个用此方法获取FacesContext当前实例的例子：<br />
&nbsp;&nbsp; FacesContext
facesContext = FacesContext.getCurrentInstance();<br />
<br />
&nbsp;获取和修改组件树FacesContext实例里最重要的内容是请求页面的组件树。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 组件树是由javax.faces.tree.Tree类来表示的(本
章后面的&#8220;使用Tree类&#8221;一节会讨论)。<br />
FacesContext实例的tree属性就是Tree对象。要获取或修改Tree对象，可使用tree属性
的读取方法和赋值方法：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public abstract Tree getTree()public abstract void
setTree(Tree tree)<br />
<br />
添加和获取消息在请求处理生命周期里，可能会遇到错误。比如，当验证器执行输入验证时，因为用户输入了不正确的值，验证可能失败；当组件试图把输入值转换
为绑定到组件的模型对象所需的类型时，也可能会失败。<br />
所有消息都必须存放到FacesContext实例里以备后面进行处理。比如，您可能希望在页面里显
示错误消息，从而为用户更正错误提供帮助。<br />
错误消息是由javax.faces.application.Message接口(第11章再详细讨论)来表
示的，您可以通过使用FacesContext类的addMessage方法向FacesContext实例里添加Message对象。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 这个方法的签名如
下：public abstract void addMessage(UIComponent component, Message
message)<br />
<br />
如果component不为空，新加入的message就关联到component上。否则，它就不与任何特定组件的实例相关。举例来
说，验证器在验证组件值失败时可调用FacesContext的addMessage方法，传入值无效的组件及一个包含特定错误消息的Message对
象。<br />
<br />
所有添加到FacesContext实例的Message对象都被加入到一个集合里。<br />
可通过调用getMessages方法的两个重载方法之一来获取
加入的Message对象：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public abstract Iterator getMessages()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public abstract
Iterator getMessages(UIComponent
component)<br />
第一种形式的调用在一个Iterator里返回所有Message对象，<br />
第二种形式的调用则仅返回与给定UIComponent相
关联的Message对象。<br />
<br />
<br />
添加和获取请求处理事件UIComponent可以生成FacesEvent对象。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 比如，当单击一个UICommand组件时，它会生成一个
ActionEvent对象(ActionEvent类是FacesEvent类的子类)。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 这个FacesEvent对象需要在FacesContext
实例里保存起来，以备请求处理生命周期里的下一步处理事件时所用。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 可通过使用FacesContext类的addFacesEvent方法向
FacesContext实例添加FacesEvent对象。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 此方法的签名如下：public abstract void
addFacesEvent(FacesEvent
event)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 要提取先前添加的FacesEvent对象，可调用getFacesEvents方法，<br />
&nbsp;&nbsp;&nbsp;&nbsp; 其签名如下：public abstract
Iterator getFacesEvents()<br />
&nbsp;&nbsp;&nbsp; 此方法返回FacesEvent时的顺序与其在队列中的顺序一致。<br />
<br />
&nbsp;向Response对象里写入信息为了向Response对象里写入信息，FacesContext类提供了两个属性，<br />
一个是
javax.faces.Context.ResponseStream类型，<br />
另一个是
javax.faces.context.ResponseWriter类型。<br />
<br />
ResponseStream类型的对象用于输出二进制数据，而
ResponseWriter类型的对象则用于输出字符。<br />
这些属性的读取方法和赋值方法如下：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public abstract
ResponseStream getResponseStream()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public abstract void
setResponseStream(ResponseStream responseStream)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public abstract
ResponseWriter getResponseWriter()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public abstract void
setResponseWriter(ResponseWriter responseWriter)<br />
<br />
获取和设置地区，JSF支持国际化和本地化。这意味着您可以根据用户的地区决定发送什么样的回应信息。<br />
locale属性里存放了当前处
理中所用的Locale对象。初始状况下，locale属性的值和网络浏览器里指定的地区是一样的，但可以修改这个值，从而发送输出所使用的地区将独立于
浏览器所使用的地区。<br />
此属性的读取方法和赋值方法如下：<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public abstract Locale getLocale()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public
abstract void setLocale(Locale locale)<br />
<br />
操作请求处理生命周期FacesContext类还提供了两个方法与请求处理生命周期进行交互：<br />
●
在当前阶段的处理完成后，调用renderResponse方法通知JSF实现把控制权转到呈现响应阶段。也就是说，处于当前阶段和呈现响应阶段之间的所
有其他阶段都不再执行。<br />
●
调用responseComplete方法，告诉JSF实现此次请求的HTTP响应已经完成(比如在使用了HTTP重定向的情况下)。<br />
<br />
因此，当前阶段完成
后，必须中止请求处理生命周期的处理。<br />
这些方法的签名如下：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public abstract void renderResponse()<br />
&nbsp;&nbsp;&nbsp;&nbsp; public
abstract void responseComplete()<br />
<br />
&nbsp;获取其他请求状态信息其他每个请求的状态信息封装在ExternalContext对象里，可以使用getExternalContext方法获取该对
象：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public abstract ExternalContext
getExternalContext()ExternalContext放在下一节讨论。
<img src ="http://www.blogjava.net/gembin/aggbug/199258.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2008-05-08 15:21 <a href="http://www.blogjava.net/gembin/archive/2008/05/08/199258.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>学习新Ajax技术--Dynamic Faces</title><link>http://www.blogjava.net/gembin/archive/2008/03/11/185442.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Tue, 11 Mar 2008 09:32:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2008/03/11/185442.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/185442.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2008/03/11/185442.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/185442.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/185442.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Dynamic Faces之DynaFaces.fireAjaxTransaction&nbsp;&nbsp;<a href='http://www.blogjava.net/gembin/archive/2008/03/11/185442.html'>阅读全文</a><img src ="http://www.blogjava.net/gembin/aggbug/185442.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2008-03-11 17:32 <a href="http://www.blogjava.net/gembin/archive/2008/03/11/185442.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>联合使用 CSS、JavaScript 和 JSF 精心打造 Ajax 应用程序，第 1 部分: 增强 JSF 页面的外观[zhuan]</title><link>http://www.blogjava.net/gembin/archive/2008/03/11/185326.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Tue, 11 Mar 2008 04:57:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2008/03/11/185326.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/185326.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2008/03/11/185326.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/185326.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/185326.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 使用 JSF 组件的样式属性,几乎每个 JSF HTML 组件都有两个可选属性，分别为 style 和 styleClass，这两个属性在 HTML 输出中呈现为 style 和 class 属性。一些组件，比如 <h:dataTable> 和 <h:panelGrid>，还有针对于其 facet 的额外样式属性。本节讨论与 CSS 相关的 JSF HTML 库属性。&nbsp;&nbsp;<a href='http://www.blogjava.net/gembin/archive/2008/03/11/185326.html'>阅读全文</a><img src ="http://www.blogjava.net/gembin/aggbug/185326.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2008-03-11 12:57 <a href="http://www.blogjava.net/gembin/archive/2008/03/11/185326.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Faces Portlet开发框架初体验[ZHUAN]</title><link>http://www.blogjava.net/gembin/archive/2008/03/06/184157.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Thu, 06 Mar 2008 02:14:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2008/03/06/184157.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/184157.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2008/03/06/184157.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/184157.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/184157.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本文介绍了最新版WSAD 5.1.2上基于 JSF技术的Faces Portlet 框架的特色，从 MVC模式角度与基本的 portlet 进行了比较，并进一步深入分析了Faces portlet 开发过程中的关键类的具体含义与功能。&nbsp;&nbsp;<a href='http://www.blogjava.net/gembin/archive/2008/03/06/184157.html'>阅读全文</a><img src ="http://www.blogjava.net/gembin/aggbug/184157.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2008-03-06 10:14 <a href="http://www.blogjava.net/gembin/archive/2008/03/06/184157.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IoVC programming model[转]</title><link>http://www.blogjava.net/gembin/archive/2008/03/05/184039.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Wed, 05 Mar 2008 08:37:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2008/03/05/184039.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/184039.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2008/03/05/184039.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/184039.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/184039.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: IoVC——“Inversion of View-Control”，即“视图控制反转”，换言之：它能够把对“View（即 UI 视图）的控制力”注入到你的后台业务逻辑中。这样一来，你在编写业务逻辑的过程中，对 View 拥有足够的控制力，从而能够将展现层与业务逻辑完全的解耦。&nbsp;&nbsp;<a href='http://www.blogjava.net/gembin/archive/2008/03/05/184039.html'>阅读全文</a><img src ="http://www.blogjava.net/gembin/aggbug/184039.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2008-03-05 16:37 <a href="http://www.blogjava.net/gembin/archive/2008/03/05/184039.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Facelets介绍</title><link>http://www.blogjava.net/gembin/archive/2008/03/05/184033.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Wed, 05 Mar 2008 08:19:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2008/03/05/184033.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/184033.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2008/03/05/184033.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/184033.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/184033.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Facelets介绍<br><br>JSF和Java服务器页面技术之间的不匹配，是JSF开发中的一个严重问题。问题是如何把JSP的动态内容集成到JSF基于组件的模型中。JSP非常重视生成动态内容输出，而JSF需要JSP来协调组件模型的构建。因为这个任务超出了JSP原来的目的，所以产生了距离。于是，有人认为“试图把 JSF 和 JSP 结合起来就像试图要把脚硬塞进手套一样：可能做得到，但是只是更好的解决办法出现之前的一个权宜之计”。<br><br>既然JSF和JSP结合起来困难重重，期待中的“更好的解决办法”出现了吗？是的，这个解决办法就是将要为你介绍的Facelets。&nbsp;&nbsp;<a href='http://www.blogjava.net/gembin/archive/2008/03/05/184033.html'>阅读全文</a><img src ="http://www.blogjava.net/gembin/aggbug/184033.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2008-03-05 16:19 <a href="http://www.blogjava.net/gembin/archive/2008/03/05/184033.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java Server Faces in Action 英文版 [下载]</title><link>http://www.blogjava.net/gembin/archive/2008/03/05/183971.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Wed, 05 Mar 2008 06:28:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2008/03/05/183971.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/183971.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2008/03/05/183971.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/183971.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/183971.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: JSF in Action英文版  (下载：Java Server Faces in Action)<br>作者：Kito D. Mann，<br>a consultant specializing in enterprise architecture, mentoring,and development.<br>Founder of JSF Central community<br> <br>相当牛鼻的书啊，欲下从数.&nbsp;&nbsp;<a href='http://www.blogjava.net/gembin/archive/2008/03/05/183971.html'>阅读全文</a><img src ="http://www.blogjava.net/gembin/aggbug/183971.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2008-03-05 14:28 <a href="http://www.blogjava.net/gembin/archive/2008/03/05/183971.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF In Action 学习之二 [原创](Managed Bean的创建与初始化)</title><link>http://www.blogjava.net/gembin/archive/2008/03/05/183925.html</link><dc:creator>gembin</dc:creator><author>gembin</author><pubDate>Wed, 05 Mar 2008 04:19:00 GMT</pubDate><guid>http://www.blogjava.net/gembin/archive/2008/03/05/183925.html</guid><wfw:comment>http://www.blogjava.net/gembin/comments/183925.html</wfw:comment><comments>http://www.blogjava.net/gembin/archive/2008/03/05/183925.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gembin/comments/commentRss/183925.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gembin/services/trackbacks/183925.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 介绍Managed Bean如何声明，创建与初始化，以及在声明的时候如何应用value-binding expressions，以增强应用的灵活性。<br>如何声明Lists and Maps作为Managed Bean。&nbsp;&nbsp;<a href='http://www.blogjava.net/gembin/archive/2008/03/05/183925.html'>阅读全文</a><img src ="http://www.blogjava.net/gembin/aggbug/183925.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gembin/" target="_blank">gembin</a> 2008-03-05 12:19 <a href="http://www.blogjava.net/gembin/archive/2008/03/05/183925.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>