﻿<?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-Vincent-文章分类-JSF</title><link>http://www.blogjava.net/Vincent-chenxj/category/36153.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 02 Dec 2008 16:19:14 GMT</lastBuildDate><pubDate>Tue, 02 Dec 2008 16:19:14 GMT</pubDate><ttl>60</ttl><item><title>JSF问题集锦</title><link>http://www.blogjava.net/Vincent-chenxj/articles/243633.html</link><dc:creator>Vincent-chen</dc:creator><author>Vincent-chen</author><pubDate>Mon, 01 Dec 2008 01:55:00 GMT</pubDate><guid>http://www.blogjava.net/Vincent-chenxj/articles/243633.html</guid><wfw:comment>http://www.blogjava.net/Vincent-chenxj/comments/243633.html</wfw:comment><comments>http://www.blogjava.net/Vincent-chenxj/articles/243633.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vincent-chenxj/comments/commentRss/243633.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vincent-chenxj/services/trackbacks/243633.html</trackback:ping><description><![CDATA[<li class="alt"><span><span class="number">1</span><span>.如何结束session? &nbsp;&nbsp;</span></span>
<li class=""><span>你可以使用session的&nbsp;invalidate方法&nbsp;. &nbsp;&nbsp;</span>
<li class="alt"><span>下面是一个从action方法中结束session的例子:&nbsp;: &nbsp;&nbsp;</span> </li>
<span>
<p class="">
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_23_228_Open_Image" onclick="this.style.display='none'; Codehighlighter1_23_228_Open_Text.style.display='none'; Codehighlighter1_23_228_Closed_Image.style.display='inline'; Codehighlighter1_23_228_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_23_228_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_23_228_Closed_Text.style.display='none'; Codehighlighter1_23_228_Open_Image.style.display='inline'; Codehighlighter1_23_228_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;logout()&nbsp;</span><span id="Codehighlighter1_23_228_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_23_228_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;FacesContext&nbsp;fc&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;FacesContext.getCurrentInstance();&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;HttpSession&nbsp;session&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(HttpSession)&nbsp;fc.getExternalContext().getSession(</span><span style="color: #0000ff">false</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;session.invalidate();&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">login_page</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span></div>
</p>
<p class="">&nbsp;</span> </p>
<li class=""><span>下面的代码片段示例了如何在JSP页面中结束session: &nbsp;&nbsp;</span> </li>
<p class="alt">
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">%&nbsp;session</span><span style="color: #ff0000">.invalidate();&nbsp;%</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">c:redirect&nbsp;</span><span style="color: #ff0000">url</span><span style="color: #0000ff">="loginPage.jsf"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span></div>
</p>
<li class=""><span>&nbsp;&nbsp;</span>
<li class="alt"><span class="number">2</span><span>.如何在JSP页面中访问web.xml中的初始化参数? &nbsp;&nbsp;</span>
<li class=""><span>你可以使用预定义的JSF&nbsp;EL变量&nbsp;&nbsp;initParam来访问: &nbsp;&nbsp;</span>
<li class="alt"><span>例如,如果你有: &nbsp;&nbsp;</span> </li>
<p class="">&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">context-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">productId</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">2004Q4</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">context-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span></div>
<p class="">&nbsp;</p>
<li class=""><span>你可以使用她&nbsp;#{initParam['productId']}来访问&nbsp;.例如: &nbsp;&nbsp;</span>
<li class="alt"><span>Product&nbsp;Id:&nbsp;&lt;h:outputText&nbsp;value=</span><span class="string">"#{initParam['productId']}"</span><span>/&gt; &nbsp;&nbsp;</span>
<li class=""><span>&nbsp;&nbsp;</span>
<li class="alt"><span>&nbsp;&nbsp;</span>
<li class=""><span class="number">3</span><span>.如何从java代码中访问web.xml&nbsp;中的初始化参数? &nbsp;&nbsp;</span>
<li class="alt"><span>你可以使用externalContext的&nbsp;getInitParameter&nbsp;方法得到他们.例如&nbsp;如果你的参数如下: &nbsp;&nbsp;</span> </li>
<p class="">&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">context-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">connectionString</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">jdbc:oracle:thin:scott/tiger@cartman:1521:O901DB</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">context-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span></div>
<p class="">&nbsp;</p>
<li class=""><span>你可以使用下面代码访问connectionString&nbsp;: &nbsp;&nbsp;</span>
<li class="alt"><span>FacesContext&nbsp;fc&nbsp;=&nbsp;FacesContext.getCurrentInstance();String&nbsp;connection&nbsp;=&nbsp;fc.getExternalContext().getInitParameter(</span><span class="string">"connectionString"</span><span>);&nbsp; &nbsp;&nbsp;</span>
<li class=""><span>&nbsp;&nbsp;</span>
<li class="alt"><span>&nbsp;&nbsp;</span>
<li class=""><span class="number">4</span><span>.如何从backing&nbsp;bean中得到当前页面的URL? &nbsp;&nbsp;</span>
<li class="alt"><span>你可以通过FacesContext得到一个Http&nbsp;Request对象的引用,如下: &nbsp;&nbsp;</span>
<li class=""><span>FacesContext&nbsp;fc&nbsp;=&nbsp;FacesContext.getCurrentInstance();HttpServletRequest&nbsp;request&nbsp;=&nbsp;(HttpServletRequest)&nbsp;fc.getExternalContext().getRequest();&nbsp; &nbsp;&nbsp;</span>
<li class="alt"><span>然后使用普通的request方法来得到路径信息.还可以使用另外一种方法: &nbsp;&nbsp;</span>
<li class=""><span>context.getViewRoot().getViewId(); &nbsp;&nbsp;</span>
<li class="alt"><span>将返回你当前JSP(JSF&nbsp;view&nbsp;IDs&nbsp;基本上只是JSP&nbsp;path&nbsp;names)页面的名字. &nbsp;&nbsp;</span>
<li class=""><span>&nbsp;&nbsp;</span>
<li class="alt"><span>&nbsp;&nbsp;</span>
<li class=""><span class="number">5</span><span>.如何添加上下文路径到outputLink的URL中? &nbsp;&nbsp;</span>
<li class="alt"><span>在当前的JSF实现中,当在outputLink&nbsp;中定义的路径以'/'开始时,没有添加上下文路径到URL中,要弥补该问题请在URL中使用&nbsp;#{facesContext.externalContext.requestContextPath}&nbsp;前缀.例如: &nbsp;&nbsp;</span>
<li class=""><span>&lt;h:outputLink&nbsp;value=</span><span class="string">"#{facesContext.externalContext.requestContextPath}/myPage.faces"</span><span>&gt; &nbsp;&nbsp;</span>
<li class="alt"><span>&nbsp;&nbsp;</span>
<li class=""><span>&nbsp;&nbsp;</span>
<li class="alt"><span class="number">6</span><span>.如何使用URL字符串来传递参数到JSF程序中? &nbsp;&nbsp;</span>
<li class=""><span>如果你有下面的URL:&nbsp;http:</span><span class="comment">//your_server/your_app/product.jsf?id=777,&nbsp;你可以使用下面的代码来访问所传递的参数:&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span>
<li class="alt"><span>FacesContext&nbsp;fc&nbsp;=&nbsp;FacesContext.getCurrentInstance();String&nbsp;id&nbsp;=&nbsp;(String)&nbsp;fc.getExternalContext().getRequestParameterMap().get(</span><span class="string">"id"</span><span>);&nbsp; &nbsp;&nbsp;</span>
<li class=""><span>在JSF页面上,你也可以使用预定义的变量访问同样的参数,例如:&nbsp; &nbsp;&nbsp;</span>
<li class="alt"><span>&lt;h:outputText&nbsp;value=</span><span class="string">"#{param['id']}"</span><span>&nbsp;/&gt; &nbsp;&nbsp;</span>
<li class=""><span>注意:&nbsp;你必须直接调用该JSF页面,并且使用servlet&nbsp;映射&nbsp;(mapping). &nbsp;&nbsp;</span>
<li class="alt"><span>&nbsp;&nbsp;</span>
<li class=""><span>&nbsp;&nbsp;</span>
<li class="alt"><span class="number">7</span><span>.如何在页面重新载入的时候保留h:inputSecret中的密码? &nbsp;&nbsp;</span>
<li class=""><span>设置redisplay=</span><span class="keyword">true</span><span>,&nbsp;it&nbsp;is&nbsp;</span><span class="keyword">false</span><span>&nbsp;by&nbsp;</span><span class="keyword">default</span><span>. &nbsp;&nbsp;</span>
<li class="alt"><span>&nbsp; &nbsp;&nbsp;</span>
<li class=""><span>&nbsp;&nbsp;</span>
<li class="alt"><span class="number">8</span><span>.如何使用h:outputText输出HTML标签? &nbsp;&nbsp;</span>
<li class=""><span>&nbsp;&nbsp;</span>
<li class="alt"><span>h:outputText有一个&nbsp;&nbsp;escape&nbsp;属性用来处理html&nbsp;标签.&nbsp;默认值为</span><span class="keyword">true</span><span>.这意味着所有特殊的符合都被转义为'&amp;'代码.&nbsp;请看下面示例:&nbsp;&nbsp;&lt;h:outputText&nbsp;value=</span><span class="string">"&lt;b&gt;This&nbsp;is&nbsp;a&nbsp;text&lt;/b&gt;"</span><span>/&gt;&nbsp;打印的结果是:&nbsp;&nbsp;&lt;b&gt;This&nbsp;is&nbsp;a&nbsp;text&lt;/b&gt;&nbsp;&nbsp;而&nbsp;&lt;h:outputText&nbsp;escape=</span><span class="string">"false"</span><span>&nbsp;value=</span><span class="string">"&lt;b&gt;This&nbsp;is&nbsp;a&nbsp;text&lt;/b&gt;"</span><span>/&gt;&nbsp;&nbsp;打印的结果是:&nbsp;&nbsp;This&nbsp;is&nbsp;a&nbsp;text&nbsp;&nbsp;当用户点击Command&nbsp;Link后如何显示确认对话框? &nbsp;&nbsp;</span>
<li class=""><span>h:commandLink指定了&nbsp;onclick&nbsp;属性为内部使用.&nbsp;因此你不可以使用她了,&nbsp;该问题已经在JSF1.</span><span class="number">2</span><span>中修复了,对于JSF1.</span><span class="number">2</span><span>以前的版本,你可以在onclick以前使用&nbsp;&nbsp;onmousedown&nbsp;事件&nbsp;&nbsp;&lt;script&nbsp;&nbsp;language=</span><span class="string">"javascript"</span><span>&gt;&nbsp;&nbsp;function&nbsp;ConfirmDelete(link)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;delete&nbsp;=&nbsp;confirm('Do&nbsp;you&nbsp;want&nbsp;to&nbsp;Delete?');&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(delete&nbsp;==&nbsp;</span><span class="keyword">true</span><span>)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;link.onclick();&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;}&lt;/script&gt; &nbsp;&nbsp;</span>
<li class="alt"><span>&lt;h:commandLink&nbsp;action=</span><span class="string">"delete"</span><span>&nbsp;onmousedown=</span><span class="string">"return&nbsp;ConfirmDelete(this);"</span><span>&gt;&nbsp;&nbsp;&lt;h:outputText&nbsp;value=</span><span class="string">"delete&nbsp;it"</span><span>/&gt;&lt;/h:commandLink&gt; &nbsp;&nbsp;</span>
<li class=""><span>&nbsp; &nbsp;&nbsp;</span>
<li class="alt"><span>&nbsp;&nbsp;</span>
<li class=""><span class="number">9</span><span>.在调用ValueChangeListener&nbsp;方法后如何重新装载页面? &nbsp;&nbsp;</span>
<li class="alt"><span>在&nbsp;ValueChangeListener的最后,调用&nbsp;&nbsp;FacesContext.getCurrentInstance().renderResponse() &nbsp;&nbsp;</span>
<li class=""><span>如何实现</span><span class="string">"请等待..."</span><span>页面?&nbsp;在客户端实现可能很简单.你可以包装JSP页面(或者你想要隐藏的一部分)到一个div中,然后你可以添加更多div,当用户点击提交按钮时这些div出现.这些div可以包含gif动画和其他内容.&nbsp;场景:当用户点击按钮,调用JS函数,该函数隐藏页面并且显示</span><span class="string">"请等待..."</span><span>div.你可以使用CSS来自定义外观:下面是一个正常工作的例子:&nbsp;&lt;%@&nbsp;taglib&nbsp;uri=</span><span class="string">"http://java.sun.com/jsf/html"</span><span>&nbsp;prefix=</span><span class="string">"h"</span><span>&nbsp;%&gt; &nbsp;&nbsp;</span> </li>
<span>
<p class="alt">
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">%@&nbsp;taglib&nbsp;</span><span style="color: #ff0000">uri</span><span style="color: #0000ff">="http://java.sun.com/jsf/core"</span><span style="color: #ff0000">&nbsp;prefix</span><span style="color: #0000ff">="f"</span><span style="color: #ff0000">&nbsp;%</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">f:loadBundle&nbsp;</span><span style="color: #ff0000">basename</span><span style="color: #0000ff">="demo.bundle.Messages"</span><span style="color: #ff0000">&nbsp;var</span><span style="color: #0000ff">="Message"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Input&nbsp;Name&nbsp;Page</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;gowait()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById("main").style.visibility="hidden";&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById("wait").style.visibility="visible";&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">body&nbsp;</span><span style="color: #ff0000">bgcolor</span><span style="color: #0000ff">="white"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">f:view</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="main"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h1</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">h:outputText&nbsp;</span><span style="color: #ff0000">value</span><span style="color: #0000ff">="#{Message.inputname_header}"</span><span style="color: #0000ff">/&gt;&lt;/</span><span style="color: #800000">h1</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:messages&nbsp;</span><span style="color: #ff0000">style</span><span style="color: #0000ff">="color:&nbsp;red"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:form&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="helloForm"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:outputText&nbsp;</span><span style="color: #ff0000">value</span><span style="color: #0000ff">="#{Message.prompt}"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:inputText&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="userName"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="#{GetNameBean.userName}"</span><span style="color: #ff0000">&nbsp;required</span><span style="color: #0000ff">="true"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">f:validateLength&nbsp;</span><span style="color: #ff0000">minimum</span><span style="color: #0000ff">="2"</span><span style="color: #ff0000">&nbsp;maximum</span><span style="color: #0000ff">="20"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">h:inputText</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:commandButton&nbsp;</span><span style="color: #ff0000">onclick</span><span style="color: #0000ff">="gowait()"</span><span style="color: #ff0000">&nbsp;id</span><span style="color: #0000ff">="submit"</span><span style="color: #ff0000">&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;action</span><span style="color: #0000ff">="#{GetNameBean.action}"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="Say&nbsp;Hello"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">h:form</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="wait"</span><span style="color: #ff0000">&nbsp;style</span><span style="color: #0000ff">="visibility:hidden;&nbsp;position:&nbsp;absolute;&nbsp;top:&nbsp;0;&nbsp;left:&nbsp;0"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">table&nbsp;</span><span style="color: #ff0000">width</span><span style="color: #0000ff">="100%"</span><span style="color: #ff0000">&nbsp;height&nbsp;</span><span style="color: #0000ff">="300px"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">tr</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">td&nbsp;</span><span style="color: #ff0000">align</span><span style="color: #0000ff">="center"</span><span style="color: #ff0000">&nbsp;valign</span><span style="color: #0000ff">="middle"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h2</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Please,&nbsp;wait<img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">h2</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">tr</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">table</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">f:view</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
</p>
<p class="alt">如果你想有一个动画gif图片在</span><span class="string">"请等待..."</span><span>中,当表单提交后该图片应该从新加载.因此,再一次指定图片的id,并且添加经过一段时间延时后重新加载的代码.下面是个例子:&nbsp;&lt;script&gt; &nbsp;&nbsp;</span> </p>
<p class=""><span>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&nbsp;function&nbsp;gowait()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;document.getElementById("main").style.visibility="hidden";&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;document.getElementById("wait").style.visibility="visible";&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;window.setTimeout('showProgress()',&nbsp;500);&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;function&nbsp;showProgress(){&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;var&nbsp;wg&nbsp;=&nbsp;document.getElementById("waitgif");&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;wg.src=wg.src;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" />.&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">img&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="waitgif"</span><span style="color: #ff0000">&nbsp;src</span><span style="color: #0000ff">="animated.gif"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span></div>
</span>
<img src ="http://www.blogjava.net/Vincent-chenxj/aggbug/243633.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vincent-chenxj/" target="_blank">Vincent-chen</a> 2008-12-01 09:55 <a href="http://www.blogjava.net/Vincent-chenxj/articles/243633.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jsf结束session</title><link>http://www.blogjava.net/Vincent-chenxj/articles/243401.html</link><dc:creator>Vincent-chen</dc:creator><author>Vincent-chen</author><pubDate>Sat, 29 Nov 2008 05:06:00 GMT</pubDate><guid>http://www.blogjava.net/Vincent-chenxj/articles/243401.html</guid><wfw:comment>http://www.blogjava.net/Vincent-chenxj/comments/243401.html</wfw:comment><comments>http://www.blogjava.net/Vincent-chenxj/articles/243401.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vincent-chenxj/comments/commentRss/243401.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vincent-chenxj/services/trackbacks/243401.html</trackback:ping><description><![CDATA[你可以使用session的 invalidate方法 . <br />
下面是一个从action方法中结束session的例子: :
<p>&nbsp;</p>
<div class="java" align="left">
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_23_209_Open_Image" onclick="this.style.display='none'; Codehighlighter1_23_209_Open_Text.style.display='none'; Codehighlighter1_23_209_Closed_Image.style.display='inline'; Codehighlighter1_23_209_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_23_209_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_23_209_Closed_Text.style.display='none'; Codehighlighter1_23_209_Open_Image.style.display='inline'; Codehighlighter1_23_209_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;logout()&nbsp;</span><span id="Codehighlighter1_23_209_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_23_209_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;FacesContext&nbsp;fc&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;FacesContext.getCurrentInstance();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;HttpSession&nbsp;session&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(HttpSession)&nbsp;fc.getExternalContext().getSession(</span><span style="color: #0000ff">false</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;session.invalidate();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">login_page</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
</div>
<p>&nbsp;</p>
<p>下面的代码片段示例了如何在JSP页面中结束session: <br />
</p>
<pre><!--ession.invalidate();-->
<pre>
<pre>&lt;% session.invalidate(); %&gt;</pre>
</pre>
<pre>&lt;c:redirect url="loginPage.jsf" /&gt; </pre>
</pre>
<img src ="http://www.blogjava.net/Vincent-chenxj/aggbug/243401.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vincent-chenxj/" target="_blank">Vincent-chen</a> 2008-11-29 13:06 <a href="http://www.blogjava.net/Vincent-chenxj/articles/243401.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>生成Excel并在客户端下载的JSF实现</title><link>http://www.blogjava.net/Vincent-chenxj/articles/242968.html</link><dc:creator>Vincent-chen</dc:creator><author>Vincent-chen</author><pubDate>Thu, 27 Nov 2008 03:36:00 GMT</pubDate><guid>http://www.blogjava.net/Vincent-chenxj/articles/242968.html</guid><wfw:comment>http://www.blogjava.net/Vincent-chenxj/comments/242968.html</wfw:comment><comments>http://www.blogjava.net/Vincent-chenxj/articles/242968.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vincent-chenxj/comments/commentRss/242968.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vincent-chenxj/services/trackbacks/242968.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 生成Excel并在客户端下载的JSF实现 　　Excel这个大家几乎每天都用到的工具，为我们的工作带来了极大的方便。在现在的B/S系统中，特别是很多大型的办公系统中，大量的报表需要处理，导出EXCEL的功能就显得尤为重要了。导出Excel已经是相当成熟的技术了，但是在java中却不是一件容易的事。特别是在JSF架构的系统中，由于使用的人数和学习的资料都很少，实现导出Excel的功能也颇费周折。...&nbsp;&nbsp;<a href='http://www.blogjava.net/Vincent-chenxj/articles/242968.html'>阅读全文</a><img src ="http://www.blogjava.net/Vincent-chenxj/aggbug/242968.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vincent-chenxj/" target="_blank">Vincent-chen</a> 2008-11-27 11:36 <a href="http://www.blogjava.net/Vincent-chenxj/articles/242968.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF实现文件下载</title><link>http://www.blogjava.net/Vincent-chenxj/articles/242959.html</link><dc:creator>Vincent-chen</dc:creator><author>Vincent-chen</author><pubDate>Thu, 27 Nov 2008 03:25:00 GMT</pubDate><guid>http://www.blogjava.net/Vincent-chenxj/articles/242959.html</guid><wfw:comment>http://www.blogjava.net/Vincent-chenxj/comments/242959.html</wfw:comment><comments>http://www.blogjava.net/Vincent-chenxj/articles/242959.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vincent-chenxj/comments/commentRss/242959.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vincent-chenxj/services/trackbacks/242959.html</trackback:ping><description><![CDATA[通过JSF下载文件，不管这个文件是物理存在的，还是由服务器内存中生成的。 <br />
用户从页面点击连接（link），下载相关的文件，该文件存在服务器端，或者由服务器端生成文件流，没有物理文件；下载后页面不跳转。<br />
<br />
<strong>JSP代码：</strong><br />
<br />
<pre class="overflow"><br />
<span style="color: #333399">&lt;h:commandLink actionListener="#{productBean.downloadAction}" styleClass="highLightLink"&gt;<br />
&nbsp;&nbsp; &lt;h:outputText value="download"/&gt;<br />
&nbsp;&nbsp; &lt;f:param name="productId" value="#{productBean.id}"/&gt;<br />
&lt;/h:commandLink&gt;</span><br />
</pre>
<br />
<br />
<strong>Backing bean设计及代码：</strong><br />
注意这是个Action listener方法，没有返回值，并且有javax.faces.event.ActionEvent参数<br />
<br />
<pre class="overflow"><br />
&nbsp;&nbsp; <span style="color: #333399">public void downloadAction(ActionEvent event) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;try {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String fileName="D:\\temp\\images\\products\\" + this.id + ".xls";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.debug("file name=" + fileName);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ByteArrayOutputStream baos=this.serviceLocator.getFileService().downloadFile(fileName); //调用Service方法，获得文件的ByteArrayOutputStream<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpServletResponse response=FacesUtils.getServletResponse();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setHeader("Content-disposition", "attachment; filename=" + id+ ".xls" ); //不是内嵌显示(inline)，而是作为附件下载<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.setContentLength(baos.size());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ServletOutputStream sos=response.getOutputStream();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;baos.writeTo(sos);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;baos.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sos.flush();<br />
&nbsp;&nbsp;&nbsp;&nbsp;} catch (IOException ex) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.debug(ex);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp; <br />
&nbsp;&nbsp;}</span><br />
</pre>
<br />
<br />
<strong>Service代码：</strong><br />
这个实现是一个从已经存在的物理文件获得输出流的范例，至于由Server在内存中生成输出流也是一样处理，例如生成一个Excel文件，再让用户下载。<br />
<br />
<pre class="overflow" style="color: #cc99ff"><br />
<span style="color: #333399">public ByteArrayOutputStream downloadFile(String fileName) throws IOException {<br />
&nbsp;&nbsp;&nbsp;&nbsp;FileInputStream fis=new FileInputStream(fileName);<br />
&nbsp;&nbsp;&nbsp;&nbsp;BufferedInputStream bis=new BufferedInputStream(fis);<br />
&nbsp;&nbsp;&nbsp;&nbsp;ByteArrayOutputStream baos=new ByteArrayOutputStream();<br />
&nbsp;&nbsp;&nbsp;&nbsp;BufferedOutputStream bos=new BufferedOutputStream(baos);<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;int i;<br />
&nbsp;&nbsp;&nbsp;&nbsp;while((i=bis.read())!=-1) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bos.write(i);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;bos.flush();//提交文件流，很关键<br />
&nbsp;&nbsp;&nbsp;&nbsp;bis.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;return baos;<br />
&nbsp;&nbsp;}<br />
</span></pre>
<br />
<img src ="http://www.blogjava.net/Vincent-chenxj/aggbug/242959.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vincent-chenxj/" target="_blank">Vincent-chen</a> 2008-11-27 11:25 <a href="http://www.blogjava.net/Vincent-chenxj/articles/242959.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF 文件上传</title><link>http://www.blogjava.net/Vincent-chenxj/articles/242953.html</link><dc:creator>Vincent-chen</dc:creator><author>Vincent-chen</author><pubDate>Thu, 27 Nov 2008 03:17:00 GMT</pubDate><guid>http://www.blogjava.net/Vincent-chenxj/articles/242953.html</guid><wfw:comment>http://www.blogjava.net/Vincent-chenxj/comments/242953.html</wfw:comment><comments>http://www.blogjava.net/Vincent-chenxj/articles/242953.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vincent-chenxj/comments/commentRss/242953.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vincent-chenxj/services/trackbacks/242953.html</trackback:ping><description><![CDATA[<p><span style="font-size: medium; font-family: 宋体">后台实现类：</span></p>
<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.FileOutputStream;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.IOException;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.regex.Matcher;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.regex.Pattern;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.faces.context.FacesContext;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.myfaces.custom.fileupload.UploadedFile;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Fileupload<br />
<img id="Codehighlighter1_252_1886_Open_Image" onclick="this.style.display='none'; Codehighlighter1_252_1886_Open_Text.style.display='none'; Codehighlighter1_252_1886_Closed_Image.style.display='inline'; Codehighlighter1_252_1886_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_252_1886_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_252_1886_Closed_Text.style.display='none'; Codehighlighter1_252_1886_Open_Image.style.display='inline'; Codehighlighter1_252_1886_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_252_1886_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_252_1886_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;UploadedFile&nbsp;_upFile;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;String&nbsp;_name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">""</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;UploadedFile&nbsp;getUpFile()<br />
<img id="Codehighlighter1_359_389_Open_Image" onclick="this.style.display='none'; Codehighlighter1_359_389_Open_Text.style.display='none'; Codehighlighter1_359_389_Closed_Image.style.display='inline'; Codehighlighter1_359_389_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_359_389_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_359_389_Closed_Text.style.display='none'; Codehighlighter1_359_389_Open_Image.style.display='inline'; Codehighlighter1_359_389_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_359_389_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_359_389_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;_upFile;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setUpFile(UploadedFile&nbsp;upFile)&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_446_478_Open_Image" onclick="this.style.display='none'; Codehighlighter1_446_478_Open_Text.style.display='none'; Codehighlighter1_446_478_Closed_Image.style.display='inline'; Codehighlighter1_446_478_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_446_478_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_446_478_Closed_Text.style.display='none'; Codehighlighter1_446_478_Open_Image.style.display='inline'; Codehighlighter1_446_478_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_446_478_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_446_478_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_upFile&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;upFile;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;getName()<br />
<img id="Codehighlighter1_513_541_Open_Image" onclick="this.style.display='none'; Codehighlighter1_513_541_Open_Text.style.display='none'; Codehighlighter1_513_541_Closed_Image.style.display='inline'; Codehighlighter1_513_541_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_513_541_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_513_541_Closed_Text.style.display='none'; Codehighlighter1_513_541_Open_Image.style.display='inline'; Codehighlighter1_513_541_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_513_541_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_513_541_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;_name;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;setName(String&nbsp;name)<br />
<img id="Codehighlighter1_585_613_Open_Image" onclick="this.style.display='none'; Codehighlighter1_585_613_Open_Text.style.display='none'; Codehighlighter1_585_613_Closed_Image.style.display='inline'; Codehighlighter1_585_613_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_585_613_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_585_613_Closed_Text.style.display='none'; Codehighlighter1_585_613_Open_Image.style.display='inline'; Codehighlighter1_585_613_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_585_613_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_585_613_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;name;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;upload()&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;IOException<br />
<img id="Codehighlighter1_666_1672_Open_Image" onclick="this.style.display='none'; Codehighlighter1_666_1672_Open_Text.style.display='none'; Codehighlighter1_666_1672_Closed_Image.style.display='inline'; Codehighlighter1_666_1672_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_666_1672_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_666_1672_Closed_Text.style.display='none'; Codehighlighter1_666_1672_Open_Image.style.display='inline'; Codehighlighter1_666_1672_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_666_1672_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_666_1672_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FacesContext&nbsp;facesContext&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;FacesContext.getCurrentInstance();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;start</span><span style="color: #000000">=</span><span style="color: #000000">_upFile.getName().lastIndexOf(</span><span style="color: #000000">"</span><span style="color: #000000">\\</span><span style="color: #000000">"</span><span style="color: #000000">)</span><span style="color: #000000">==-</span><span style="color: #000000">1</span><span style="color: #000000">?</span><span style="color: #000000">_upFile.getName().lastIndexOf(</span><span style="color: #000000">"</span><span style="color: #000000">\\</span><span style="color: #000000">"</span><span style="color: #000000">):_upFile.getName().lastIndexOf(</span><span style="color: #000000">"</span><span style="color: #000000">\\</span><span style="color: #000000">"</span><span style="color: #000000">)</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;file</span><span style="color: #000000">=</span><span style="color: #000000">_upFile.getName().substring(start,_upFile.getName().length());<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;path</span><span style="color: #000000">=</span><span style="color: #000000">Fileupload.</span><span style="color: #0000ff">class</span><span style="color: #000000">.getResource(</span><span style="color: #000000">"</span><span style="color: #000000">/</span><span style="color: #000000">"</span><span style="color: #000000">).getPath().substring(</span><span style="color: #000000">1</span><span style="color: #000000">,Fileupload.</span><span style="color: #0000ff">class</span><span style="color: #000000">.getResource(</span><span style="color: #000000">"</span><span style="color: #000000">/</span><span style="color: #000000">"</span><span style="color: #000000">).getPath().length());<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;path</span><span style="color: #000000">=</span><span style="color: #000000">path.replace(</span><span style="color: #000000">"</span><span style="color: #000000">%20</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">)</span><span style="color: #000000">+</span><span style="color: #000000">file;<br />
<img id="Codehighlighter1_1142_1259_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1142_1259_Open_Text.style.display='none'; Codehighlighter1_1142_1259_Closed_Image.style.display='inline'; Codehighlighter1_1142_1259_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1142_1259_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1142_1259_Closed_Text.style.display='none'; Codehighlighter1_1142_1259_Open_Image.style.display='inline'; Codehighlighter1_1142_1259_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_1142_1259_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1142_1259_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;FileOutputStream&nbsp;keyFOS&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileOutputStream(path);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;keyFOS.write(_upFile.getBytes());<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;keyFOS.close();<br />
<img id="Codehighlighter1_1281_1318_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1281_1318_Open_Text.style.display='none'; Codehighlighter1_1281_1318_Closed_Image.style.display='inline'; Codehighlighter1_1281_1318_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1281_1318_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1281_1318_Closed_Text.style.display='none'; Codehighlighter1_1281_1318_Open_Image.style.display='inline'; Codehighlighter1_1281_1318_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(Exception&nbsp;e)&nbsp;</span><span id="Codehighlighter1_1281_1318_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1281_1318_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">lalala</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;facesContext.getExternalContext().getApplicationMap().put(</span><span style="color: #000000">"</span><span style="color: #000000">fileupload_bytes</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;_upFile.getBytes());<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;facesContext.getExternalContext().getApplicationMap().put(</span><span style="color: #000000">"</span><span style="color: #000000">fileupload_type</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;_upFile.getContentType());<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;facesContext.getExternalContext().getApplicationMap().put(</span><span style="color: #000000">"</span><span style="color: #000000">fileupload_name</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;_upFile.getName());<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;path;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;isUploaded()<br />
<img id="Codehighlighter1_1707_1884_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1707_1884_Open_Text.style.display='none'; Codehighlighter1_1707_1884_Closed_Image.style.display='inline'; Codehighlighter1_1707_1884_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1707_1884_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1707_1884_Closed_Text.style.display='none'; Codehighlighter1_1707_1884_Open_Image.style.display='inline'; Codehighlighter1_1707_1884_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1707_1884_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1707_1884_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FacesContext&nbsp;facesContext&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;FacesContext.getCurrentInstance();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;facesContext.getExternalContext().getApplicationMap().get(</span><span style="color: #000000">"</span><span style="color: #000000">fileupload_bytes</span><span style="color: #000000">"</span><span style="color: #000000">)</span><span style="color: #000000">!=</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<p>&nbsp;</p>
<p><span style="font-size: medium; font-family: 宋体">前台实现：Myfaces</span></p>
<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">t:inputFileUpload&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="fileupload"</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value</span><span style="color: #0000ff">="#{action$fixing.myFile}"</span><span style="color: #ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;storage</span><span style="color: #0000ff">="file"</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;styleClass</span><span style="color: #0000ff">="fileUploadInput"</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxlength</span><span style="color: #0000ff">="200000"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:commandButton&nbsp;</span><span style="color: #ff0000">value</span><span style="color: #0000ff">="#{prompt['Submit']}"</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;action</span><span style="color: #0000ff">="#{action$fixing.sel}"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="font-size: medium; font-family: 宋体">后台管理Bean：</span></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">import&nbsp;org.apache.myfaces.custom.fileupload.UploadedFile;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />public&nbsp;class&nbsp;FixingAction{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />private&nbsp;UploadedFile&nbsp;myFile;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />public&nbsp;UploadedFile&nbsp;getMyFile()&nbsp;{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;return&nbsp;myFile;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;}<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />public&nbsp;void&nbsp;setMyFile(UploadedFile&nbsp;myFile)&nbsp;{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;this.myFile&nbsp;=&nbsp;myFile;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;}<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;String&nbsp;sel(){<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fileupload&nbsp;file=new&nbsp;Fileupload();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />String&nbsp;path=file.setUpFile(this.myFile);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />System.out.println("文件存放路径："+path);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />return&nbsp;null;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;}<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />}<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<img src ="http://www.blogjava.net/Vincent-chenxj/aggbug/242953.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vincent-chenxj/" target="_blank">Vincent-chen</a> 2008-11-27 11:17 <a href="http://www.blogjava.net/Vincent-chenxj/articles/242953.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jsf 另存为的实现</title><link>http://www.blogjava.net/Vincent-chenxj/articles/242946.html</link><dc:creator>Vincent-chen</dc:creator><author>Vincent-chen</author><pubDate>Thu, 27 Nov 2008 02:39:00 GMT</pubDate><guid>http://www.blogjava.net/Vincent-chenxj/articles/242946.html</guid><wfw:comment>http://www.blogjava.net/Vincent-chenxj/comments/242946.html</wfw:comment><comments>http://www.blogjava.net/Vincent-chenxj/articles/242946.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vincent-chenxj/comments/commentRss/242946.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vincent-chenxj/services/trackbacks/242946.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_34_2362_Open_Image" onclick="this.style.display='none'; Codehighlighter1_34_2362_Open_Text.style.display='none'; Codehighlighter1_34_2362_Closed_Image.style.display='inline'; Codehighlighter1_34_2362_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_34_2362_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_34_2362_Closed_Text.style.display='none'; Codehighlighter1_34_2362_Open_Image.style.display='inline'; Codehighlighter1_34_2362_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;btnSaveXML_action()&nbsp;</span><span id="Codehighlighter1_34_2362_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_34_2362_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;TODO:&nbsp;Process&nbsp;the&nbsp;action.&nbsp;Return&nbsp;value&nbsp;is&nbsp;a&nbsp;navigation<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;case&nbsp;name&nbsp;where&nbsp;null&nbsp;will&nbsp;return&nbsp;to&nbsp;the&nbsp;same&nbsp;page.</span><span style="color: #008000"><br />
<img id="Codehighlighter1_176_2192_Open_Image" onclick="this.style.display='none'; Codehighlighter1_176_2192_Open_Text.style.display='none'; Codehighlighter1_176_2192_Closed_Image.style.display='inline'; Codehighlighter1_176_2192_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_176_2192_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_176_2192_Closed_Text.style.display='none'; Codehighlighter1_176_2192_Open_Image.style.display='inline'; Codehighlighter1_176_2192_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_176_2192_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_176_2192_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">get&nbsp;the&nbsp;appId</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Integer&nbsp;appId&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Integer.valueOf(txtMemory1.getText().toString());<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;appName&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;datamanagementservice.getAppNameByAppId(appId);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Document&nbsp;doc&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;writeXML(appId,&nbsp;appName);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TransformerFactory&nbsp;tFactory&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;TransformerFactory.newInstance();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Transformer&nbsp;transformer&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;tFactory.newTransformer();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DOMSource&nbsp;source&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DOMSource(doc);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">the&nbsp;file's&nbsp;loadpath</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;loadPath&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">c:\\temp\\</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;appName&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">.xml</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">if&nbsp;the&nbsp;file&nbsp;no&nbsp;exist&nbsp;then&nbsp;create&nbsp;it</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;f&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;File(</span><span style="color: #000000">"</span><span style="color: #000000">c:\\temp\\</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f.mkdirs();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StreamResult&nbsp;result&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;StreamResult(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;java.io.File(loadPath));<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transformer.transform(source,&nbsp;result);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">new&nbsp;a&nbsp;download&nbsp;file</span><span style="color: #008000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;t_file&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;File(loadPath);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">long</span><span style="color: #000000">&nbsp;l;<br />
<img id="Codehighlighter1_1118_1178_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1118_1178_Open_Text.style.display='none'; Codehighlighter1_1118_1178_Closed_Image.style.display='inline'; Codehighlighter1_1118_1178_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1118_1178_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1118_1178_Closed_Text.style.display='none'; Codehighlighter1_1118_1178_Open_Image.style.display='inline'; Codehighlighter1_1118_1178_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(l&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0L</span><span style="color: #000000">;&nbsp;l&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0L</span><span style="color: #000000">;&nbsp;l&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;t_file.length())&nbsp;</span><span id="Codehighlighter1_1118_1178_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1118_1178_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t_file&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;File(loadPath);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStream&nbsp;in&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileInputStream(t_file);<br />
<img id="Codehighlighter1_1266_2182_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1266_2182_Open_Text.style.display='none'; Codehighlighter1_1266_2182_Closed_Image.style.display='inline'; Codehighlighter1_1266_2182_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1266_2182_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1266_2182_Closed_Text.style.display='none'; Codehighlighter1_1266_2182_Open_Image.style.display='inline'; Codehighlighter1_1266_2182_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(in&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)&nbsp;</span><span id="Codehighlighter1_1266_2182_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_1266_2182_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;filename&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;t_file.getName();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filename&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;java.net.URLEncoder.encode(filename,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">utf-8</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FacesContext.getCurrentInstance().responseComplete();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpServletResponse&nbsp;httpServletResponse&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(HttpServletResponse)&nbsp;FacesContext.getCurrentInstance().getExternalContext().getResponse();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;httpServletResponse.reset();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;httpServletResponse.setContentType(</span><span style="color: #000000">"</span><span style="color: #000000">application/x-msdownload</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;rrr&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">attachment;&nbsp;filename=</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;filename;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;httpServletResponse.setHeader(</span><span style="color: #000000">"</span><span style="color: #000000">Content-Disposition</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;rrr);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;httpServletResponse.setContentLength((</span><span style="color: #0000ff">int</span><span style="color: #000000">)&nbsp;l);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">&nbsp;b[]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">byte</span><span style="color: #000000">[</span><span style="color: #000000">2048</span><span style="color: #000000">];<br />
<img id="Codehighlighter1_2046_2140_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2046_2140_Open_Text.style.display='none'; Codehighlighter1_2046_2140_Closed_Image.style.display='inline'; Codehighlighter1_2046_2140_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_2046_2140_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2046_2140_Closed_Text.style.display='none'; Codehighlighter1_2046_2140_Open_Image.style.display='inline'; Codehighlighter1_2046_2140_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;len&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;(len&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;in.read(b))&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;)&nbsp;</span><span id="Codehighlighter1_2046_2140_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_2046_2140_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;httpServletResponse.getOutputStream().write(b,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;len);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in.close();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_2214_2257_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2214_2257_Open_Text.style.display='none'; Codehighlighter1_2214_2257_Closed_Image.style.display='inline'; Codehighlighter1_2214_2257_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_2214_2257_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2214_2257_Closed_Text.style.display='none'; Codehighlighter1_2214_2257_Open_Image.style.display='inline'; Codehighlighter1_2214_2257_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(Exception&nbsp;e)&nbsp;</span><span id="Codehighlighter1_2214_2257_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_2214_2257_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getRequestBean1().setSelectAppId((Integer)&nbsp;dropDown1.getSelected());<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<img src ="http://www.blogjava.net/Vincent-chenxj/aggbug/242946.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vincent-chenxj/" target="_blank">Vincent-chen</a> 2008-11-27 10:39 <a href="http://www.blogjava.net/Vincent-chenxj/articles/242946.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF和Richfaces中使用框架页(Frameset)，包括了PanelMenu </title><link>http://www.blogjava.net/Vincent-chenxj/articles/242064.html</link><dc:creator>Vincent-chen</dc:creator><author>Vincent-chen</author><pubDate>Sat, 22 Nov 2008 17:05:00 GMT</pubDate><guid>http://www.blogjava.net/Vincent-chenxj/articles/242064.html</guid><wfw:comment>http://www.blogjava.net/Vincent-chenxj/comments/242064.html</wfw:comment><comments>http://www.blogjava.net/Vincent-chenxj/articles/242064.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vincent-chenxj/comments/commentRss/242064.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vincent-chenxj/services/trackbacks/242064.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt">第一种，普通的方法:<br />
</span>
<div><span style="font-size: 10pt">想在JSF控件中操作框架页Frameset，可以在左框架页（任一框架页）里声明一个Form，设定好它的target="mainFrame"（任一框架页的id），这样当点击这个Form里面的CommandButton或者CommandLink的时候，JSF处理好业务逻辑后，就可以将To-View-ID指定的页面转到主框架页里面去显示了。<br />
<br />
</span></div>
<div align="center">
<table style="width: 500px; height: 193px" cellspacing="2" cellpadding="2" width="500" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <p><span style="font-size: 10pt">&lt;h:form target="mainFrame"&gt;<br />
            &lt;h:commandButton action="index"&gt;<br />
            &lt;/h:form</span></p>
            </td>
            <td width="300"><span style="font-size: 10pt">mainFrame</span></td>
        </tr>
    </tbody>
</table>
</div>
<br />
<span style="font-size: 10pt">点击左边的commandButton之后，index处理之后的To-View-ID指定的页面就会显示在mainFrame里面了 <br />
<br />
第二种方法：<br />
</span>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="font-size: 10pt"><img id="Codehighlighter1_10_123_Open_Image" onclick="this.style.display='none'; Codehighlighter1_10_123_Open_Text.style.display='none'; Codehighlighter1_10_123_Closed_Image.style.display='inline'; Codehighlighter1_10_123_Closed_Text.style.display='inline';" alt="" src="file:///F:/Vincent/richface/richface/blogjava/ExpandedBlockStart-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" /><img id="Codehighlighter1_10_123_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_10_123_Closed_Text.style.display='none'; Codehighlighter1_10_123_Open_Image.style.display='inline'; Codehighlighter1_10_123_Open_Text.style.display='inline';" alt="" src="file:///F:/Vincent/richface/richface/blogjava/ContractedBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span id="Codehighlighter1_10_123_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/dot.gif" tppabs="http://www.blogjava.net/Images/dot.gif" /></span></span><span id="Codehighlighter1_10_123_Open_Text"><span style="color: #000000; background-color: #f5f5f5"><br />
<span style="font-size: 10pt"><img id="Codehighlighter1_35_120_Open_Image" onclick="this.style.display='none'; Codehighlighter1_35_120_Open_Text.style.display='none'; Codehighlighter1_35_120_Closed_Image.style.display='inline'; Codehighlighter1_35_120_Closed_Text.style.display='inline';" alt="" src="file:///F:/Vincent/richface/richface/blogjava/ExpandedSubBlockStart-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="Codehighlighter1_35_120_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_35_120_Closed_Text.style.display='none'; Codehighlighter1_35_120_Open_Image.style.display='inline'; Codehighlighter1_35_120_Open_Text.style.display='inline';" alt="" src="file:///F:/Vincent/richface/richface/blogjava/ContractedSubBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 10pt"><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;forward(p)&nbsp;</span><span id="Codehighlighter1_35_120_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/dot.gif" tppabs="http://www.blogjava.net/Images/dot.gif" /></span></span><span id="Codehighlighter1_35_120_Open_Text"><span style="font-size: 10pt"><span style="color: #000000; background-color: #f5f5f5">{<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/InBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.parent.mainFrame.location.href</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">usermanagement/</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">+</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;p&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">+</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">.faces</span><span style="color: #000000; background-color: #f5f5f5">"</span></span><span style="color: #000000; background-color: #f5f5f5"><span style="font-size: 10pt">;<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/ExpandedSubBlockEnd-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></span><span style="color: #000000; background-color: #f5f5f5"><br />
<span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/ExpandedBlockEnd-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-size: 10pt"><span style="color: #0000ff">&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span></span></div>
<span style="font-size: 10pt">添加一个跳转函数，然后分情况添加跳转：<br />
当不需要Action的时候 </span>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">rich:panelMenuItem&nbsp;</span><span style="color: #ff0000">label</span><span style="color: #0000ff">="角色信息维护"</span><span style="color: #ff0000">&nbsp;onclick</span><span style="color: #0000ff">="forward('rolelist')"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span></span></div>
<span style="font-size: 10pt">这样就可以跳转了<br />
<br />
当需要先进行Action操作再跳转的时候<br />
</span>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">rich:panelMenuItem&nbsp;</span><span style="color: #ff0000">label</span><span style="color: #0000ff">="新建角色"</span></span><span style="color: #ff0000"><br />
<span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;action</span></span><span style="font-size: 10pt"><span style="color: #0000ff">="#{user.addRoleMain}"</span><span style="color: #ff0000">&nbsp;oncomplete</span><span style="color: #0000ff">="forward('roledetail')"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span></span></div>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span></span><span style="font-size: 10pt"><span style="color: #000000">&nbsp;String&nbsp;addRoleMain()<br />
<img id="Codehighlighter1_30_63_Open_Image" onclick="this.style.display='none'; Codehighlighter1_30_63_Open_Text.style.display='none'; Codehighlighter1_30_63_Closed_Image.style.display='inline'; Codehighlighter1_30_63_Closed_Text.style.display='inline';" alt="" src="file:///F:/Vincent/richface/richface/blogjava/ExpandedBlockStart-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" /><img id="Codehighlighter1_30_63_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_30_63_Closed_Text.style.display='none'; Codehighlighter1_30_63_Open_Image.style.display='inline'; Codehighlighter1_30_63_Open_Text.style.display='inline';" alt="" src="file:///F:/Vincent/richface/richface/blogjava/ContractedBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_30_63_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/dot.gif" tppabs="http://www.blogjava.net/Images/dot.gif" /></span></span><span id="Codehighlighter1_30_63_Open_Text"><span style="font-size: 10pt"><span style="color: #000000">{<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/InBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ClearRole();<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/InBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span></span><span style="color: #000000"><span style="font-size: 10pt">;<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/ExpandedBlockEnd-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></span></div>
<br />
<span style="font-size: 10pt">这样，在Action完成后，菜单页不会变，主框架页会跳转到指定页面。<br />
<br />
OK,上面两种方法基本能满足开发需要了。 </span>
<img src ="http://www.blogjava.net/Vincent-chenxj/aggbug/242064.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vincent-chenxj/" target="_blank">Vincent-chen</a> 2008-11-23 01:05 <a href="http://www.blogjava.net/Vincent-chenxj/articles/242064.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF(Java Server Faces)的StateHolder的作用和使用方法 </title><link>http://www.blogjava.net/Vincent-chenxj/articles/242063.html</link><dc:creator>Vincent-chen</dc:creator><author>Vincent-chen</author><pubDate>Sat, 22 Nov 2008 17:04:00 GMT</pubDate><guid>http://www.blogjava.net/Vincent-chenxj/articles/242063.html</guid><wfw:comment>http://www.blogjava.net/Vincent-chenxj/comments/242063.html</wfw:comment><comments>http://www.blogjava.net/Vincent-chenxj/articles/242063.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vincent-chenxj/comments/commentRss/242063.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vincent-chenxj/services/trackbacks/242063.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: UI控件、转换器和验证器实现了StateHolder接口表示组件具有了状态，可以保存一些组件自身的属性。下面我们来看一个简单的例子。这是一个正则表达式验证器的例子：public&nbsp;class&nbsp;RegexValidator&nbsp;implements&nbsp;Validator{&nbsp;&nbsp;&nbsp;&nbsp;/**&nbsp;*/...&nbsp;&nbsp;<a href='http://www.blogjava.net/Vincent-chenxj/articles/242063.html'>阅读全文</a><img src ="http://www.blogjava.net/Vincent-chenxj/aggbug/242063.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vincent-chenxj/" target="_blank">Vincent-chen</a> 2008-11-23 01:04 <a href="http://www.blogjava.net/Vincent-chenxj/articles/242063.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在JSF控件中操作框架页Frameset </title><link>http://www.blogjava.net/Vincent-chenxj/articles/242051.html</link><dc:creator>Vincent-chen</dc:creator><author>Vincent-chen</author><pubDate>Sat, 22 Nov 2008 16:42:00 GMT</pubDate><guid>http://www.blogjava.net/Vincent-chenxj/articles/242051.html</guid><wfw:comment>http://www.blogjava.net/Vincent-chenxj/comments/242051.html</wfw:comment><comments>http://www.blogjava.net/Vincent-chenxj/articles/242051.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vincent-chenxj/comments/commentRss/242051.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vincent-chenxj/services/trackbacks/242051.html</trackback:ping><description><![CDATA[<a class="postTitle2" id="viewpost1_TitleUrl" style="font-size: 10pt" href="file:///F:/Vincent/richface/richface/blogjava/234952.html" tppabs="http://www.blogjava.net/TiGERTiAN/archive/2008/10/17/234952.html">
<div>想在JSF控件中操作框架页Frameset，可以在左框架页（任一框架页）里声明一个Form，设定好它的target="mainFrame"（任一框架页的id），这样当点击这个Form里面的CommandButton或者CommandLink的时候，JSF处理好业务逻辑后，就可以将To-View-ID指定的页面转到主框架页里面去显示了。<br />
<br />
</div>
<div align="center">
<table style="width: 500px; height: 193px" cellspacing="2" cellpadding="2" width="500" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <p>&lt;h:form target="mainFrame"&gt;<br />
            &lt;h:commandButton action="index"&gt;<br />
            &lt;/h:form</p>
            </td>
            <td width="300">mainFrame</td>
        </tr>
    </tbody>
</table>
</div>
<br />
点击左边的commandButton之后，index处理之后的To-View-ID指定的页面就会显示在mainFrame里面了 <br />
</a>
<img src ="http://www.blogjava.net/Vincent-chenxj/aggbug/242051.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vincent-chenxj/" target="_blank">Vincent-chen</a> 2008-11-23 00:42 <a href="http://www.blogjava.net/Vincent-chenxj/articles/242051.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF页面中支持的Expression Language(EL) </title><link>http://www.blogjava.net/Vincent-chenxj/articles/242050.html</link><dc:creator>Vincent-chen</dc:creator><author>Vincent-chen</author><pubDate>Sat, 22 Nov 2008 16:39:00 GMT</pubDate><guid>http://www.blogjava.net/Vincent-chenxj/articles/242050.html</guid><wfw:comment>http://www.blogjava.net/Vincent-chenxj/comments/242050.html</wfw:comment><comments>http://www.blogjava.net/Vincent-chenxj/articles/242050.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vincent-chenxj/comments/commentRss/242050.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vincent-chenxj/services/trackbacks/242050.html</trackback:ping><description><![CDATA[<p><span style="font-size: 10pt">以下是可使用的EL常量的列表：<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/jsfel1.jpg" border="0" tppabs="http://www.blogjava.net/images/blogjava_net/tigertian/jsfel1.jpg" /><br />
<img height="544" alt="" src="file:///F:/Vincent/richface/richface/blogjava/jsfel2.jpg" width="670" border="0" tppabs="http://www.blogjava.net/images/blogjava_net/tigertian/jsfel2.jpg" /></span></p>
<br />
<img src ="http://www.blogjava.net/Vincent-chenxj/aggbug/242050.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vincent-chenxj/" target="_blank">Vincent-chen</a> 2008-11-23 00:39 <a href="http://www.blogjava.net/Vincent-chenxj/articles/242050.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>后来程序控制前台UI控件的方法 </title><link>http://www.blogjava.net/Vincent-chenxj/articles/242049.html</link><dc:creator>Vincent-chen</dc:creator><author>Vincent-chen</author><pubDate>Sat, 22 Nov 2008 16:38:00 GMT</pubDate><guid>http://www.blogjava.net/Vincent-chenxj/articles/242049.html</guid><wfw:comment>http://www.blogjava.net/Vincent-chenxj/comments/242049.html</wfw:comment><comments>http://www.blogjava.net/Vincent-chenxj/articles/242049.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vincent-chenxj/comments/commentRss/242049.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vincent-chenxj/services/trackbacks/242049.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt">第一种方法：<br />
JSF页面中的代码：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:form&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="messageForm"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:outputText&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="outputMessage"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:commandButton&nbsp;</span><span style="color: #ff0000">value</span><span style="color: #0000ff">="Get&nbsp;Message"</span><span style="color: #ff0000"><br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />actionListener</span><span style="color: #0000ff">="#{testForm.sendMessage}"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">h:form</span><span style="color: #0000ff">&gt;</span></div>
后台程序：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;sendMessage(ActionEvent&nbsp;e)<br />
<img id="Codehighlighter1_39_296_Open_Image" onclick="this.style.display='none'; Codehighlighter1_39_296_Open_Text.style.display='none'; Codehighlighter1_39_296_Closed_Image.style.display='inline'; Codehighlighter1_39_296_Closed_Text.style.display='inline';" alt="" src="file:///F:/Vincent/richface/richface/blogjava/ExpandedBlockStart-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" /><img id="Codehighlighter1_39_296_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_39_296_Closed_Text.style.display='none'; Codehighlighter1_39_296_Open_Image.style.display='inline'; Codehighlighter1_39_296_Open_Text.style.display='inline';" alt="" src="file:///F:/Vincent/richface/richface/blogjava/ContractedBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" /></span><span id="Codehighlighter1_39_296_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/dot.gif" tppabs="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_39_296_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/InBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />FacesContext&nbsp;context&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;FacesContext.getCurrentInstance();<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/InBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />UIViewRoot&nbsp;view&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;context.getViewRoot();<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/InBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />HtmlOutputText&nbsp;output&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000"><br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/InBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />(HtmlOutputText)view.findComponent(</span><span style="color: #000000">"</span><span style="color: #000000">messageForm:outputMessage</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/InBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />output.setStyle(</span><span style="color: #000000">"</span><span style="color: #000000">color:blue</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/InBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />output.setValue(</span><span style="color: #000000">"</span><span style="color: #000000">Who's&nbsp;the&nbsp;Mann?</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/ExpandedBlockEnd-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span></div>
之后，当点击Get Message的时候页面就会在outputMessage的地方输出 <span style="color: #0000ff">Who's the Mann?</span> <br />
第二种方法：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:inputText&nbsp;</span><span style="color: #ff0000">value</span><span style="color: #0000ff">="#{registrationForm.comments}"</span><span style="color: #ff0000"><br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />binding</span><span style="color: #0000ff">="#{registrationForm.commentsInput}"</span><span style="color: #0000ff">/&gt;</span></div>
commentsInput是RegistrationForm中的一个HtmlInputText类型的一个变量，通过binding属性将前台UI控件和后台同类型的变量绑定，就可以在后台直接操作了。</span>
<img src ="http://www.blogjava.net/Vincent-chenxj/aggbug/242049.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vincent-chenxj/" target="_blank">Vincent-chen</a> 2008-11-23 00:38 <a href="http://www.blogjava.net/Vincent-chenxj/articles/242049.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java Server Faces Events And Listeners (JSF中的事件与监听器)</title><link>http://www.blogjava.net/Vincent-chenxj/articles/242048.html</link><dc:creator>Vincent-chen</dc:creator><author>Vincent-chen</author><pubDate>Sat, 22 Nov 2008 16:37:00 GMT</pubDate><guid>http://www.blogjava.net/Vincent-chenxj/articles/242048.html</guid><wfw:comment>http://www.blogjava.net/Vincent-chenxj/comments/242048.html</wfw:comment><comments>http://www.blogjava.net/Vincent-chenxj/articles/242048.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vincent-chenxj/comments/commentRss/242048.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vincent-chenxj/services/trackbacks/242048.html</trackback:ping><description><![CDATA[<p><span style="font-size: 12pt"><span style="font-size: 10pt">JSF的一个核心就是事件与监听。JSF事件分为以下几种：<br />
1、Value-change events（值改变事件）<br />
</span></span></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="font-size: 12pt"><span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:inputText&nbsp;</span><span style="color: #ff0000">valueChangeListener</span><span style="color: #0000ff">="#{myForm.processValueChanged}"</span><span style="color: #0000ff">/&gt;</span></span></span><span style="color: #000000"><br />
<span style="font-size: 12pt"><span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:panelGrid&nbsp;</span><span style="color: #ff0000">binding</span><span style="color: #0000ff">="#{myForm.changePanel}"</span><span style="color: #ff0000">&nbsp;rendered</span><span style="color: #0000ff">="false"</span><span style="color: #0000ff">&gt;</span></span></span><span style="color: #000000"><br />
<span style="font-size: 12pt"><span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/dot.gif" tppabs="http://www.blogjava.net/Images/dot.gif" /><br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #0000ff">&lt;/</span><span style="color: #800000">h:panelGrid</span><span style="color: #0000ff">&gt;</span></span></span></div>
<p><span style="font-size: 12pt"><br />
</span>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="font-size: 12pt"><span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #000000">&nbsp;processValueChanged(ValueChangeEvent&nbsp;event)<br />
<img id="Codehighlighter1_56_175_Open_Image" onclick="this.style.display='none'; Codehighlighter1_56_175_Open_Text.style.display='none'; Codehighlighter1_56_175_Closed_Image.style.display='inline'; Codehighlighter1_56_175_Closed_Text.style.display='inline';" alt="" src="file:///F:/Vincent/richface/richface/blogjava/ExpandedBlockStart-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" /><img id="Codehighlighter1_56_175_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_56_175_Closed_Text.style.display='none'; Codehighlighter1_56_175_Open_Image.style.display='inline'; Codehighlighter1_56_175_Open_Text.style.display='inline';" alt="" src="file:///F:/Vincent/richface/richface/blogjava/ContractedBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" /></span><span id="Codehighlighter1_56_175_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/dot.gif" tppabs="http://www.blogjava.net/Images/dot.gif" /></span></span></span><span id="Codehighlighter1_56_175_Open_Text"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #000000">{<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/InBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />HtmlInputText&nbsp;sender&nbsp;</span><span style="color: #000000">=</span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #000000">&nbsp;(HtmlInputText)event.getComponent();<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/InBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />sender.setReadonly(</span><span style="color: #0000ff">true</span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #000000">);<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/InBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />changePanel.setRendered(</span><span style="color: #0000ff">true</span></span></span><span style="color: #000000"><span style="font-size: 12pt"><span style="font-size: 10pt">);<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/ExpandedBlockEnd-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span></span></span></div>
<p><span style="font-size: 12pt"><span style="font-size: 10pt">当inputText的值改变的时候会触发processValueChanged事件，此事情内部通过参数，获取HtmlInputText的控件，然后设定readonly，同时设定panelGrid的模型changePanel的属性，因为panelGrid绑定了changePanel这个模型。<br />
<br />
2、Action events(动作事件)<br />
</span></span></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="font-size: 12pt"><span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:commandButton&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="submit"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="Login"</span><span style="color: #ff0000">&nbsp;action</span><span style="color: #0000ff">="success"</span></span></span><span style="color: #ff0000"><br />
<span style="font-size: 12pt"><span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />immediate</span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #0000ff">="true"</span><span style="color: #0000ff">/&gt;</span></span></span></div>
<p><span style="font-size: 12pt"><span style="font-size: 10pt">上面这个是静态outcome事件，在faces-config.xml中配置相应的属性后，点击该按钮会转向相应的方法。<br />
<br />
</span></span></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="font-size: 12pt"><span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:commandButton&nbsp;</span><span style="color: #ff0000">value&nbsp;</span><span style="color: #0000ff">=&nbsp;"Test&nbsp;Action&nbsp;Listener"</span><span style="color: #ff0000">&nbsp;actionListener&nbsp;</span><span style="color: #0000ff">=&nbsp;"#{testActionListener.doSomeAction}"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span></span></span></div>
<p><span style="font-size: 12pt"><span style="font-size: 10pt">如果添加了actionListener属性的话，点击之后，在转向其他页面之前，会触发指定的事件，处理之后再转向。<br />
这里的doSomeAction方法的声明是void doSomeAction(ActionEvent actionEvent)。<br />
<br />
</span></span></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="font-size: 12pt"><span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:commandButton&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="submit"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="Login"</span></span></span><span style="color: #ff0000"><br />
<span style="font-size: 12pt"><span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />action</span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #0000ff">="#{loginForm.login}"</span><span style="color: #0000ff">/&gt;</span></span></span></div>
<p><span style="font-size: 12pt"><span style="font-size: 10pt">上面这个是动态outcome事件，当点击该按钮之后会直接触发loginForm中的login事件，login事件返回的是一个字符串，在login处理完相应操作之后需要返回一个属性中已经配置过的字符串，例如success，然后JSF根据faces-config.xml中的配置，跳转到相应的页面。login的声明一般是String login();<br />
<br />
当然也可以通过程序来添加监听器，不过监听器类需要实现ActionListener接口：<br />
</span></span></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="font-size: 12pt"><span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /><span style="color: #000000">UIComponent&nbsp;myComponent&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #000000">&nbsp;UIComponent();<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />myComponent.addActionListener(</span><span style="color: #0000ff">new</span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #000000">&nbsp;TestActionListener());<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />myComponent.addActionListener(</span><span style="color: #0000ff">new</span></span></span><span style="color: #000000"><span style="font-size: 12pt"><span style="font-size: 10pt">&nbsp;CustomActionListener());<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /><br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span></span></span></div>
<p><br />
<span style="font-size: 12pt"><span style="font-size: 10pt">3、Data model events（数据模型事件）<br />
</span></span></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="font-size: 12pt"><span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /><span style="color: #000000">FacesContext&nbsp;facesContext&nbsp;</span><span style="color: #000000">=</span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #000000">&nbsp;FacesContext.getCurrentInstance();<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />dataTable&nbsp;</span><span style="color: #000000">=</span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #000000">&nbsp;(HtmlDataTable)facesContext.getApplication().createComponent(<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />HtmlDataTable.COMPONENT_TYPE);<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />DataModel&nbsp;myDataModel&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #000000">&nbsp;ResultSetDataModel(myResultSet);<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />myDataModel.addDataModelListener(</span><span style="color: #0000ff">new</span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #000000">&nbsp;DataModelListener()<br />
<img id="Codehighlighter1_286_430_Open_Image" onclick="this.style.display='none'; Codehighlighter1_286_430_Open_Text.style.display='none'; Codehighlighter1_286_430_Closed_Image.style.display='inline'; Codehighlighter1_286_430_Closed_Text.style.display='inline';" alt="" src="file:///F:/Vincent/richface/richface/blogjava/ExpandedBlockStart-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" /><img id="Codehighlighter1_286_430_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_286_430_Closed_Text.style.display='none'; Codehighlighter1_286_430_Open_Image.style.display='inline'; Codehighlighter1_286_430_Open_Text.style.display='inline';" alt="" src="file:///F:/Vincent/richface/richface/blogjava/ContractedBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" /></span><span id="Codehighlighter1_286_430_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/dot.gif" tppabs="http://www.blogjava.net/Images/dot.gif" /></span></span></span><span id="Codehighlighter1_286_430_Open_Text"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #000000">{<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/InBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #000000">&nbsp;rowSelected(DataModelEvent&nbsp;e)<br />
<img id="Codehighlighter1_330_428_Open_Image" onclick="this.style.display='none'; Codehighlighter1_330_428_Open_Text.style.display='none'; Codehighlighter1_330_428_Closed_Image.style.display='inline'; Codehighlighter1_330_428_Closed_Text.style.display='inline';" alt="" src="file:///F:/Vincent/richface/richface/blogjava/ExpandedSubBlockStart-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="Codehighlighter1_330_428_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_330_428_Closed_Text.style.display='none'; Codehighlighter1_330_428_Open_Image.style.display='inline'; Codehighlighter1_330_428_Open_Text.style.display='inline';" alt="" src="file:///F:/Vincent/richface/richface/blogjava/ContractedSubBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" /></span><span id="Codehighlighter1_330_428_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/dot.gif" tppabs="http://www.blogjava.net/Images/dot.gif" /></span></span></span><span id="Codehighlighter1_330_428_Open_Text"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #000000">{<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/InBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />FacesContext.getCurrentInstance().getExternalContext().<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/InBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />log(</span><span style="color: #000000">"</span><span style="color: #000000">row&nbsp;selected:</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span></span></span><span style="color: #000000"><span style="font-size: 12pt"><span style="font-size: 10pt">&nbsp;e.getRowIndex());<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/ExpandedSubBlockEnd-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" />}</span></span></span></span><span style="color: #000000"><br />
<span style="font-size: 12pt"><span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/ExpandedBlockEnd-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span></span></span><span style="color: #000000"><span style="font-size: 12pt"><span style="font-size: 10pt">);<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />dataTable.setValue(myDataModel);</span></span></span></div>
<p><span style="font-size: 12pt"><span style="font-size: 10pt">将上面的代码放入初始化程序中，当行的选择改变的时候就会触发相应的日志打印。<br />
这是因为这段代码给dataTable控件定义了一个数据模型，数据和相应的事件全部存在这个数据模型里面，然后将dataTable与这个模型进行绑定即可使用它所有的数据和事件。点击dataTable上面的一行自然也就会出发相应的行选择事件。 <br />
<br />
4.Phase events（阶段事件）<br />
</span></span></p>
<p><span style="font-size: 12pt"><span style="font-size: 10pt">这个事件是为了捕捉一些阶段和过程而设定的，有以下几个阶段可以捕捉：<br />
</span></span></p>
<p><span style="font-size: 12pt"></span>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="font-size: 12pt"><span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span></span><span style="color: #000000"><span style="font-size: 12pt"><span style="font-size: 10pt">ANY_PHASE&nbsp;任一阶段<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />APPLY_REQUEST_VALUES&nbsp;&nbsp;请求处理阶段的应用请求值阶段<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />INVOKE_APPLICATION&nbsp;请求处理阶段的调用程序阶段<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />PROCESS_VALIDATIONS&nbsp;请求处理阶段的处理验证阶段<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />RENDER_RESPONSE&nbsp;&nbsp;请求处理阶段的描述响应阶段<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />RESTORE_VIEW&nbsp;请求处理阶段的恢复视图阶段<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />UPDATE_MODEL_VALUES&nbsp;请求处理阶段的更新模型值阶段</span></span></span></div>
<p><span style="font-size: 12pt"></span>&nbsp;</p>
<p><span style="font-size: 12pt"><span style="font-size: 10pt">具体可以参考</span></span><a href="javascript:if(confirm('http://java.sun.com/javaee/javaserverfaces/1.1_01/docs/api/javax/faces/event/PhaseId.html  \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.  \n\nDo you want to open it from the server?'))window.location='http://java.sun.com/javaee/javaserverfaces/1.1_01/docs/api/javax/faces/event/PhaseId.html'" tppabs="http://java.sun.com/javaee/javaserverfaces/1.1_01/docs/api/javax/faces/event/PhaseId.html"><span style="font-size: 12pt"><span style="font-size: 10pt">http://java.sun.com/javaee/javaserverfaces/1.1_01/docs/api/javax/faces/event/PhaseId.html</span></span></a></p>
<p><span style="font-size: 12pt"><span style="font-size: 10pt">通过设定在实现类中设定相应的PhaseId以及添加到faces-config.xml中就可以捕捉相应阶段事件并添加响应的代码</span></span></p>
<p><span style="font-size: 12pt"><span style="font-size: 10pt">实现类</span></span></p>
<p><span style="font-size: 12pt"></span>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="font-size: 12pt"><span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /><span style="color: #0000ff">import</span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #000000">&nbsp;javax.faces.event.PhaseEvent;<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #000000">&nbsp;javax.faces.event.PhaseId;<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #000000">&nbsp;javax.faces.event.PhaseListener;<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /><br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;CustomPhaseListener&nbsp;</span><span style="color: #0000ff">implements</span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #000000">&nbsp;PhaseListener<br />
<img id="Codehighlighter1_170_576_Open_Image" onclick="this.style.display='none'; Codehighlighter1_170_576_Open_Text.style.display='none'; Codehighlighter1_170_576_Closed_Image.style.display='inline'; Codehighlighter1_170_576_Closed_Text.style.display='inline';" alt="" src="file:///F:/Vincent/richface/richface/blogjava/ExpandedBlockStart-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" /><img id="Codehighlighter1_170_576_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_170_576_Closed_Text.style.display='none'; Codehighlighter1_170_576_Open_Image.style.display='inline'; Codehighlighter1_170_576_Open_Text.style.display='inline';" alt="" src="file:///F:/Vincent/richface/richface/blogjava/ContractedBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" /></span><span id="Codehighlighter1_170_576_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/dot.gif" tppabs="http://www.blogjava.net/Images/dot.gif" /></span></span></span><span id="Codehighlighter1_170_576_Open_Text"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/InBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #000000">&nbsp;CustomPhaseListener()<br />
<img id="Codehighlighter1_213_219_Open_Image" onclick="this.style.display='none'; Codehighlighter1_213_219_Open_Text.style.display='none'; Codehighlighter1_213_219_Closed_Image.style.display='inline'; Codehighlighter1_213_219_Closed_Text.style.display='inline';" alt="" src="file:///F:/Vincent/richface/richface/blogjava/ExpandedSubBlockStart-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="Codehighlighter1_213_219_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_213_219_Closed_Text.style.display='none'; Codehighlighter1_213_219_Open_Image.style.display='inline'; Codehighlighter1_213_219_Open_Text.style.display='inline';" alt="" src="file:///F:/Vincent/richface/richface/blogjava/ContractedSubBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_213_219_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/dot.gif" tppabs="http://www.blogjava.net/Images/dot.gif" /></span></span></span><span id="Codehighlighter1_213_219_Open_Text"><span style="color: #000000"><span style="font-size: 12pt"><span style="font-size: 10pt">{<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/ExpandedSubBlockEnd-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></span></span><span style="color: #000000"><br />
<span style="font-size: 12pt"><span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/InBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" /><br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/InBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #000000">&nbsp;afterPhase(PhaseEvent&nbsp;event)<br />
<img id="Codehighlighter1_271_347_Open_Image" onclick="this.style.display='none'; Codehighlighter1_271_347_Open_Text.style.display='none'; Codehighlighter1_271_347_Closed_Image.style.display='inline'; Codehighlighter1_271_347_Closed_Text.style.display='inline';" alt="" src="file:///F:/Vincent/richface/richface/blogjava/ExpandedSubBlockStart-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="Codehighlighter1_271_347_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_271_347_Closed_Text.style.display='none'; Codehighlighter1_271_347_Open_Image.style.display='inline'; Codehighlighter1_271_347_Open_Text.style.display='inline';" alt="" src="file:///F:/Vincent/richface/richface/blogjava/ContractedSubBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_271_347_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/dot.gif" tppabs="http://www.blogjava.net/Images/dot.gif" /></span></span></span><span id="Codehighlighter1_271_347_Open_Text"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #000000">{<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/InBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">After&nbsp;Phase-&gt;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span></span></span><span style="color: #000000"><span style="font-size: 12pt"><span style="font-size: 10pt">&nbsp;event.getPhaseId());&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/ExpandedSubBlockEnd-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></span></span><span style="color: #000000"><br />
<span style="font-size: 12pt"><span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/InBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" /><br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/InBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #000000">&nbsp;beforePhase(PhaseEvent&nbsp;event)<br />
<img id="Codehighlighter1_400_473_Open_Image" onclick="this.style.display='none'; Codehighlighter1_400_473_Open_Text.style.display='none'; Codehighlighter1_400_473_Closed_Image.style.display='inline'; Codehighlighter1_400_473_Closed_Text.style.display='inline';" alt="" src="file:///F:/Vincent/richface/richface/blogjava/ExpandedSubBlockStart-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="Codehighlighter1_400_473_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_400_473_Closed_Text.style.display='none'; Codehighlighter1_400_473_Open_Image.style.display='inline'; Codehighlighter1_400_473_Open_Text.style.display='inline';" alt="" src="file:///F:/Vincent/richface/richface/blogjava/ContractedSubBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_400_473_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/dot.gif" tppabs="http://www.blogjava.net/Images/dot.gif" /></span></span></span><span id="Codehighlighter1_400_473_Open_Text"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #000000">{<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/InBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Before&nbsp;Phase-&gt;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span></span></span><span style="color: #000000"><span style="font-size: 12pt"><span style="font-size: 10pt">&nbsp;event.getPhaseId());<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/ExpandedSubBlockEnd-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></span></span><span style="color: #000000"><br />
<span style="font-size: 12pt"><span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/InBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" /><br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/InBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="color: #0000ff"><span style="font-size: 12pt"><span style="font-size: 10pt">public</span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #000000">&nbsp;PhaseId&nbsp;getPhaseId()<br />
<img id="Codehighlighter1_512_570_Open_Image" onclick="this.style.display='none'; Codehighlighter1_512_570_Open_Text.style.display='none'; Codehighlighter1_512_570_Closed_Image.style.display='inline'; Codehighlighter1_512_570_Closed_Text.style.display='inline';" alt="" src="file:///F:/Vincent/richface/richface/blogjava/ExpandedSubBlockStart-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img id="Codehighlighter1_512_570_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_512_570_Closed_Text.style.display='none'; Codehighlighter1_512_570_Open_Image.style.display='inline'; Codehighlighter1_512_570_Open_Text.style.display='inline';" alt="" src="file:///F:/Vincent/richface/richface/blogjava/ContractedSubBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_512_570_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/dot.gif" tppabs="http://www.blogjava.net/Images/dot.gif" /></span></span></span><span id="Codehighlighter1_512_570_Open_Text"><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #000000">{<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/InBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;PhaseId.ANY_PHASE;</span><span style="color: #008000">//</span><span style="color: #008000">选择事件标识的常量，此为任一阶段</span></span></span><span style="color: #008000"><br />
<span style="font-size: 12pt"><span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/ExpandedSubBlockEnd-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" /></span></span></span><span style="color: #000000"><span style="font-size: 12pt"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></span></span><span style="color: #000000"><span style="font-size: 12pt"><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/ExpandedBlockEnd-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span></span></span></div>
<p><br />
<span style="font-size: 12pt"><span style="font-size: 10pt">在faces-config.xml中添加<br />
</span></span></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="font-size: 12pt"><span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">lifecycle</span><span style="color: #0000ff">&gt;</span></span></span><span style="color: #000000"><br />
<span style="font-size: 12pt"><span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #0000ff">&lt;</span><span style="color: #800000">phase-listener</span><span style="color: #0000ff">&gt;</span></span></span><span style="color: #000000"><br />
<span style="font-size: 12pt"><span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;net.javabeat.articles.jsf.events.actions.TestActionListener<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #0000ff">&lt;/</span><span style="color: #800000">phase-listener</span><span style="color: #0000ff">&gt;</span></span></span><span style="color: #000000"><br />
<span style="font-size: 12pt"><span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #0000ff">&lt;/</span><span style="color: #800000">lifecycle</span><span style="color: #0000ff">&gt;</span></span></span></div>
<p><br />
<span style="font-size: 12pt"><span style="font-size: 10pt">当然可以添加无限个的监听器<br />
</span></span></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="font-size: 12pt"><span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">lifecycle</span><span style="color: #0000ff">&gt;</span></span></span><span style="color: #000000"><br />
<span style="font-size: 12pt"><span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #0000ff">&lt;</span><span style="color: #800000">phase-listener</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">PhaseListener1</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">phase-listener</span><span style="color: #0000ff">&gt;</span></span></span><span style="color: #000000"><br />
<span style="font-size: 12pt"><span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #0000ff">&lt;</span><span style="color: #800000">phase-listener</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">PhaseListener2</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">phase-listener</span><span style="color: #0000ff">&gt;</span></span></span><span style="color: #000000"><br />
<span style="font-size: 12pt"><span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span></span></span><span style="font-size: 12pt"><span style="font-size: 10pt"><span style="color: #0000ff">&lt;/</span><span style="color: #800000">lifecycle</span><span style="color: #0000ff">&gt;</span></span></span><span style="color: #000000"><br />
<span style="font-size: 12pt"><span style="font-size: 10pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span></span></span></div>
<p><br />
<span style="font-size: 12pt"><span style="font-size: 10pt">下面是请求处理的生命周期，大家可以直观的看一下各个阶段执行顺序：<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/jsfrequestlifecycle.png" border="0" tppabs="http://www.blogjava.net/images/blogjava_net/tigertian/jsfrequestlifecycle.png" />&nbsp;<br />
各个阶段的说明以及所能触发的事件<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/jsfeventtable.jpg" border="0" tppabs="http://www.blogjava.net/images/blogjava_net/tigertian/jsfeventtable.jpg" />&nbsp;<br />
</span></span></p>
<img src ="http://www.blogjava.net/Vincent-chenxj/aggbug/242048.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vincent-chenxj/" target="_blank">Vincent-chen</a> 2008-11-23 00:37 <a href="http://www.blogjava.net/Vincent-chenxj/articles/242048.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF与后台程序的交互 </title><link>http://www.blogjava.net/Vincent-chenxj/articles/242045.html</link><dc:creator>Vincent-chen</dc:creator><author>Vincent-chen</author><pubDate>Sat, 22 Nov 2008 16:21:00 GMT</pubDate><guid>http://www.blogjava.net/Vincent-chenxj/articles/242045.html</guid><wfw:comment>http://www.blogjava.net/Vincent-chenxj/comments/242045.html</wfw:comment><comments>http://www.blogjava.net/Vincent-chenxj/articles/242045.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vincent-chenxj/comments/commentRss/242045.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vincent-chenxj/services/trackbacks/242045.html</trackback:ping><description><![CDATA[<span style="font-size: 12pt">如果Managed-Bean已经被创建并存在，则可以通过下面的形式访问session范围内的Managed-Bean<br />
</span>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="font-size: 12pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /><span style="color: #000000">org.test.TestBean&nbsp;x&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(org.test.TestBean)&nbsp;request.getSession().getAttribute(</span><span style="color: #000000">"</span><span style="color: #000000">testBean</span><span style="color: #000000">"</span><span style="color: #000000">);</span></span></div>
<br />
<br />
<span style="font-size: 12pt">如果不存在，则需要先访问一下Managed-Bean，让他被触发而创建<br />
</span>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="font-size: 12pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /><span style="color: #000000">org.test.TestBean&nbsp;x&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(org.test.TestBean)&nbsp;Util.getBean(</span><span style="color: #000000">"</span><span style="color: #000000">testBean</span><span style="color: #000000">"</span></span><span style="font-size: 12pt"><span style="color: #000000">);&nbsp;<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /><br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span><span style="color: #008000">//</span><span style="color: #008000">In&nbsp;Util.java:</span></span><span style="color: #008000"><br />
<span style="font-size: 12pt"><img id="Codehighlighter1_127_360_Open_Image" onclick="this.style.display='none'; Codehighlighter1_127_360_Open_Text.style.display='none'; Codehighlighter1_127_360_Closed_Image.style.display='inline'; Codehighlighter1_127_360_Closed_Text.style.display='inline';" alt="" src="file:///F:/Vincent/richface/richface/blogjava/ExpandedBlockStart-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" /><img id="Codehighlighter1_127_360_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_127_360_Closed_Text.style.display='none'; Codehighlighter1_127_360_Open_Image.style.display='inline'; Codehighlighter1_127_360_Open_Text.style.display='inline';" alt="" src="file:///F:/Vincent/richface/richface/blogjava/ContractedBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" /></span></span><span style="font-size: 12pt"><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;Object&nbsp;getBean(String&nbsp;expr)</span><span id="Codehighlighter1_127_360_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/dot.gif" tppabs="http://www.blogjava.net/Images/dot.gif" /></span></span><span id="Codehighlighter1_127_360_Open_Text"><span style="font-size: 12pt"><span style="color: #000000">{<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/InBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />FacesContext&nbsp;context&nbsp;</span><span style="color: #000000">=</span></span><span style="font-size: 12pt"><span style="color: #000000">&nbsp;FacesContext.getCurrentInstance();&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/InBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />Application&nbsp;app&nbsp;</span><span style="color: #000000">=</span></span><span style="font-size: 12pt"><span style="color: #000000">&nbsp;context.getApplication();&nbsp;<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/InBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />ValueBinding&nbsp;binding&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;app.createValueBinding(</span><span style="color: #000000">"</span><span style="color: #000000">#{</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;expr&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">}</span><span style="color: #000000">"</span></span><span style="font-size: 12pt"><span style="color: #000000">);<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/InBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />Object&nbsp;value&nbsp;</span><span style="color: #000000">=</span></span><span style="font-size: 12pt"><span style="color: #000000">&nbsp;binding.getValue(context);&nbsp;&nbsp;<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/InBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" /></span><span style="color: #0000ff">return</span></span><span style="color: #000000"><span style="font-size: 12pt">&nbsp;value;<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/ExpandedBlockEnd-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span></span><span style="color: #000000"><br />
<span style="font-size: 12pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /></span></span></div>
<br />
<span style="font-size: 12pt">为JSF指定Action，可以这样写：<br />
</span>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="font-size: 12pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">h:commandButton&nbsp;action</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">#{user.verify}</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;value</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">Say&nbsp;Hello!</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span></span><span style="font-size: 12pt"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">h:commandButton</span><span style="color: #000000">&gt;</span></span></div>
<span style="font-size: 12pt">User类中的代码:<br />
</span>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="font-size: 12pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span></span><span style="font-size: 12pt"><span style="color: #000000">&nbsp;String&nbsp;verify()<br />
<img id="Codehighlighter1_25_163_Open_Image" onclick="this.style.display='none'; Codehighlighter1_25_163_Open_Text.style.display='none'; Codehighlighter1_25_163_Closed_Image.style.display='inline'; Codehighlighter1_25_163_Closed_Text.style.display='inline';" alt="" src="file:///F:/Vincent/richface/richface/blogjava/ExpandedBlockStart-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" /><img id="Codehighlighter1_25_163_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_25_163_Closed_Text.style.display='none'; Codehighlighter1_25_163_Open_Image.style.display='inline'; Codehighlighter1_25_163_Open_Text.style.display='inline';" alt="" src="file:///F:/Vincent/richface/richface/blogjava/ContractedBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_25_163_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/dot.gif" tppabs="http://www.blogjava.net/Images/dot.gif" /></span></span><span id="Codehighlighter1_25_163_Open_Text"><span style="color: #000000"><span style="font-size: 12pt">{</span></span><span style="color: #000000"><br />
<span style="font-size: 12pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/InBlock-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 12pt"><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">hello</span><span style="color: #000000">"</span></span><span style="color: #000000"><span style="font-size: 12pt">;<br />
<img alt="" src="file:///F:/Vincent/richface/richface/blogjava/ExpandedBlockEnd-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></span></div>
<span style="font-size: 12pt">faces-config.xml中:<br />
</span>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="font-size: 12pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" /><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">managed-bean</span><span style="color: #0000ff">&gt;</span></span><span style="color: #000000"><br />
<span style="font-size: 12pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />&nbsp;&nbsp;</span></span><span style="font-size: 12pt"><span style="color: #0000ff">&lt;</span><span style="color: #800000">description</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">User&nbsp;Name&nbsp;Bean</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">description</span><span style="color: #0000ff">&gt;</span></span><span style="color: #000000"><br />
<span style="font-size: 12pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />&nbsp;&nbsp;</span></span><span style="font-size: 12pt"><span style="color: #0000ff">&lt;</span><span style="color: #800000">managed-bean-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">user</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">managed-bean-name</span><span style="color: #0000ff">&gt;</span></span><span style="color: #000000"><br />
<span style="font-size: 12pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />&nbsp;&nbsp;</span></span><span style="font-size: 12pt"><span style="color: #0000ff">&lt;</span><span style="color: #800000">managed-bean-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">demo.User</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">managed-bean-class</span><span style="color: #0000ff">&gt;</span></span><span style="color: #000000"><br />
<span style="font-size: 12pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />&nbsp;&nbsp;</span></span><span style="font-size: 12pt"><span style="color: #0000ff">&lt;</span><span style="color: #800000">managed-bean-scope</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">session</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">managed-bean-scope</span><span style="color: #0000ff">&gt;</span></span><span style="color: #000000"><br />
<span style="font-size: 12pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />&nbsp;</span></span><span style="font-size: 12pt"><span style="color: #0000ff">&lt;/</span><span style="color: #800000">managed-bean</span><span style="color: #0000ff">&gt;</span></span><span style="color: #000000"><br />
<span style="font-size: 12pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />&nbsp;</span></span><span style="font-size: 12pt"><span style="color: #0000ff">&lt;</span><span style="color: #800000">navigation-rule</span><span style="color: #0000ff">&gt;</span></span><span style="color: #000000"><br />
<span style="font-size: 12pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />&nbsp;&nbsp;</span></span><span style="font-size: 12pt"><span style="color: #0000ff">&lt;</span><span style="color: #800000">from-view-id</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">/pages/inputUserName.jsp</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">from-view-id</span><span style="color: #0000ff">&gt;</span></span><span style="color: #000000"><br />
<span style="font-size: 12pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />&nbsp;&nbsp;</span></span><span style="font-size: 12pt"><span style="color: #0000ff">&lt;</span><span style="color: #800000">navigation-case</span><span style="color: #0000ff">&gt;</span></span><span style="color: #000000"><br />
<span style="font-size: 12pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 12pt"><span style="color: #0000ff">&lt;</span><span style="color: #800000">from-outcome</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">hello</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">from-outcome</span><span style="color: #0000ff">&gt;</span></span><span style="color: #000000"><br />
<span style="font-size: 12pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;</span></span><span style="font-size: 12pt"><span style="color: #0000ff">&lt;</span><span style="color: #800000">to-view-id</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">/pages/hello.jsp</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">to-view-id</span><span style="color: #0000ff">&gt;</span></span><span style="color: #000000"><br />
<span style="font-size: 12pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />&nbsp;&nbsp;</span></span><span style="font-size: 12pt"><span style="color: #0000ff">&lt;/</span><span style="color: #800000">navigation-case</span><span style="color: #0000ff">&gt;</span></span><span style="color: #000000"><br />
<span style="font-size: 12pt"><img alt="" src="file:///F:/Vincent/richface/richface/blogjava/None-1.gif" align="top" tppabs="http://www.blogjava.net/Images/OutliningIndicators/None.gif" />&nbsp;</span></span><span style="font-size: 12pt"><span style="color: #0000ff">&lt;/</span><span style="color: #800000">navigation-rule</span><span style="color: #0000ff">&gt;</span></span></div>
<span style="font-size: 12pt">这样，点击按钮，就会转到verify方法中进行验证，然后返回相应结果的字符串，jsf根据返回的结果进行相应的页面跳转。<br />
</span>
<img src ="http://www.blogjava.net/Vincent-chenxj/aggbug/242045.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vincent-chenxj/" target="_blank">Vincent-chen</a> 2008-11-23 00:21 <a href="http://www.blogjava.net/Vincent-chenxj/articles/242045.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>