﻿<?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-jwebee</title><link>http://www.blogjava.net/jwebee/</link><description>jwebee</description><language>zh-cn</language><lastBuildDate>Tue, 28 Apr 2026 18:57:31 GMT</lastBuildDate><pubDate>Tue, 28 Apr 2026 18:57:31 GMT</pubDate><ttl>60</ttl><item><title>想给全球50亿手机用户开发软件吗？</title><link>http://www.blogjava.net/jwebee/archive/2010/09/17/332322.html</link><dc:creator>jwebee</dc:creator><author>jwebee</author><pubDate>Fri, 17 Sep 2010 09:15:00 GMT</pubDate><guid>http://www.blogjava.net/jwebee/archive/2010/09/17/332322.html</guid><wfw:comment>http://www.blogjava.net/jwebee/comments/332322.html</wfw:comment><comments>http://www.blogjava.net/jwebee/archive/2010/09/17/332322.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jwebee/comments/commentRss/332322.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jwebee/services/trackbacks/332322.html</trackback:ping><description><![CDATA[<p>想给全球50亿手机用户开发软件吗？本信息来源于赶集网ganji.com<br />
你想在移动互联网行业创业？我们教你！<br />
你想学习智能手机开发，我们教你！<br />
你想做一个产品，我们帮你！<br />
你想。。。<br />
让创新办公室来实现您的梦想！</p>
<p>合作模式<br />
第一阶段：Android/Ophone/乐phone培训(收费)<br />
第二阶段：承接外包项目或合作开发项目（分成）</p>
<p>用3-6个月时间，和我们一起工作、成长，使你变成程序天才<br />
给你外包项目或合作项目，培养您的综合（自学、演讲、管理）能力<br />
教您如何在移动互联网市场强得先机，赚取你人生的第一桶金<br />
如果您离开创新办公室，我们帮你创业或介绍进入公司工作</p>
<p>每周末免费3G技术讲座，敬请预约！</p>
<p>电话：029-68062269<br />
qq:1203740654<br />
地址：西安市富裕路中段（外事学院北校区西行100米）</p>
<img src ="http://www.blogjava.net/jwebee/aggbug/332322.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jwebee/" target="_blank">jwebee</a> 2010-09-17 17:15 <a href="http://www.blogjava.net/jwebee/archive/2010/09/17/332322.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]國際化訊息 </title><link>http://www.blogjava.net/jwebee/archive/2008/05/22/202239.html</link><dc:creator>jwebee</dc:creator><author>jwebee</author><pubDate>Thu, 22 May 2008 04:39:00 GMT</pubDate><guid>http://www.blogjava.net/jwebee/archive/2008/05/22/202239.html</guid><wfw:comment>http://www.blogjava.net/jwebee/comments/202239.html</wfw:comment><comments>http://www.blogjava.net/jwebee/archive/2008/05/22/202239.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jwebee/comments/commentRss/202239.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jwebee/services/trackbacks/202239.html</trackback:ping><description><![CDATA[<div id="wikitext">JSF的國際化（Internnationalization）訊息處理是基於Java對國際化的支援，您可以在一個訊息資源檔中統一管理訊息資源，資源檔的名稱是.properties，而內容是名稱與值的配對，例如：<br />
<ul>
    <li>messages.properties </li>
</ul>
<pre> <br />
titleText=JSF Demo<br />
hintText=Please input your name and password<br />
nameText=name<br />
passText=password<br />
commandText=Submit<br />
<br />
</pre>
<p>&nbsp;</p>
資源檔名稱由basename加上語言與地區來組成，例如：<br />
<ul>
    <li>basename.properties
    <li>basename_en.properties
    <li>basename_zh_TW.properties </li>
</ul>
<p>&nbsp;</p>
沒有指定語言與地區的basename是預設的資源檔名稱，JSF會根據瀏覽器送來的Accept-Language header中的內容來決定該使用哪一個資源檔名稱，例如：<br />
<p>&nbsp;</p>
<em><strong>Accept-Language: zh_TW, en-US, en</strong></em><br />
<p>&nbsp;</p>
如果瀏覽器送來這些header，則預設會使用繁體中文，接著是美式英文，再來是英文語系，如果找不到對應的訊息資源檔，則會使用預設的訊息資源檔。<br />
<p>&nbsp;</p>
由於訊息資源檔必須是ISO-8859-1編碼，所以對於非西方語系的處理，必須先將之轉換為Java Unicode Escape格式，例如您可以先在訊息資源檔中寫下以下的內容：<br />
<ul>
    <li>messages_zh_TW.txt </li>
</ul>
<pre> <br />
titleText=JSF示範<br />
hintText=請輸入名稱與密碼<br />
nameText=名稱<br />
passText=密碼<br />
commandText=送出<br />
<br />
</pre>
<p>&nbsp;</p>
然後使用JDK的工具程式native2ascii來轉換，例如：<br />
<p>&nbsp;</p>
<em><strong>native2ascii -encoding Big5 messages_zh_TW.txt messages_zh_TW.properties</strong></em><br />
<p>&nbsp;</p>
轉換後的內容會如下：<br />
<ul>
    <li>messages_zh_TW.properties </li>
</ul>
<pre> <br />
titleText=JSF\u793a\u7bc4<br />
hintText=\u8acb\u8f38\u5165\u540d\u7a31\u8207\u5bc6\u78bc<br />
nameText=\u540d\u7a31<br />
passText=\u5bc6\u78bc<br />
commandText=\u9001\u51fa<br />
<br />
</pre>
<p>&nbsp;</p>
接下來您可以使用&lt;f:loadBundle&gt;標籤來指定載入訊息資源，一個例子如下：<br />
<ul>
    <li>index.jsp </li>
</ul>
<pre> <br />
&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;<br />
&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;<br />
&lt;%@page contentType="text/html;charset=UTF-8"%&gt;<br />
<br />
&lt;f:view&gt;<br />
&lt;f:loadBundle basename="messages" var="msgs"/&gt;<br />
<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;&lt;h:outputText value="#{msgs.titleText}"/&gt;&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
<br />
&lt;h:form&gt;<br />
&lt;h3&gt;&lt;h:outputText value="#{msgs.hintText}"/&gt;&lt;/h3&gt;<br />
&lt;h:outputText value="#{msgs.nameText}"/&gt;:<br />
&lt;h:inputText value="#{user.name}"/&gt;&lt;p&gt;<br />
&lt;h:outputText value="#{msgs.passText}"/&gt;: <br />
&lt;h:inputSecret value="#{user.password}"/&gt;&lt;p&gt; <br />
&lt;h:commandButton value="#{msgs.commandText}" <br />
actionListener="#{user.verify}"<br />
action="#{user.outcome}"/&gt;<br />
&lt;/h:form&gt;<br />
<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
<br />
&lt;/f:view&gt;<br />
<br />
</pre>
<p>&nbsp;</p>
如此一來，如果您的瀏覽器預設接受zh_TW語系的話，則頁面上就可以顯示中文，否則預設將以英文顯示，也就是messages.properties的內容，為了能顯示多國語系，我們設定網頁編碼為UTF8。<br />
<p>&nbsp;</p>
&lt;f:view&gt;可以設定locale屬性，直接指定所要使用的語系，例如：<br />
<pre> <br />
&lt;f:view locale="zh_TW"&gt;<br />
&lt;f:loadBundle basename="messages" var="msgs"/&gt;<br />
<br />
</pre>
<p>&nbsp;</p>
直接指定以上的話，則會使用繁體中文來顯示，JSF會根據&lt;f:loadBundle&gt;的basename屬性加上&lt;f:view&gt;的locale屬性來決定要使用哪一個訊息資源檔，就上例而言，就是使用 messages_zh_TW.properties，如果設定為以下的話，就會使用messages_en.properties：<br />
<pre> <br />
&lt;f:view locale="en"&gt;<br />
&lt;f:loadBundle basename="messages" var="msgs"/&gt;<br />
<br />
</pre>
<p>&nbsp;</p>
您也可以在faces-config.xml中設定語系，例如：<br />
<pre> <br />
&lt;faces-config&gt;<br />
&lt;application&gt;<br />
&lt;local-config&gt;<br />
&lt;default-locale&gt;en&lt;/default-locale&gt;<br />
&lt;supported-locale&gt;zh_TW&lt;/supported-locale&gt;<br />
&lt;/local-config&gt;<br />
&lt;/application&gt;<br />
<br />
.....<br />
&lt;/faces-config&gt;<br />
<br />
</pre>
<p>&nbsp;</p>
在&lt;local-config&gt;一定有一個&lt;default-locale&gt;，而&lt;supported- locale&gt;可以有好幾個，這告訴JSF您的應用程式支援哪些語系。<br />
<p>&nbsp;</p>
當然，如果您可以提供一個選項讓使用者選擇自己的語系會是更好的方式，例如根據user這個Bean的locale屬性來決定頁面語系：<br />
<pre> <br />
&lt;f:view locale="#{user.locale}"&gt;<br />
&lt;f:loadBundle basename="messages" var="msgs"/&gt;<br />
<br />
</pre>
<p>&nbsp;</p>
在頁面中設定一個表單，可以讓使用者選擇語系，例如設定單選鈕：<br />
<pre> <br />
&lt;h:selectOneRadio value="#{user.locale}"&gt;<br />
&lt;f:selectItem itemValue="zh_TW" <br />
itemLabel="#{msgs.zh_TWText}"/&gt;<br />
&lt;f:selectItem itemValue="en" <br />
itemLabel="#{msgs.enText}"/&gt;<br />
&lt;/h:selectOneRadio&gt;<br />
<br />
</pre>
</div><img src ="http://www.blogjava.net/zhouxing/aggbug/202138.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-05-22 12:39 <a href="http://www.blogjava.net/zhouxing/archive/2008/05/22/I18NMessages.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div><br>文章来源:<a href='http://www.blogjava.net/zhouxing/archive/2008/05/22/I18NMessages.html'>http://www.blogjava.net/zhouxing/archive/2008/05/22/I18NMessages.html</a><img src ="http://www.blogjava.net/jwebee/aggbug/202239.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jwebee/" target="_blank">jwebee</a> 2008-05-22 12:39 <a href="http://www.blogjava.net/jwebee/archive/2008/05/22/202239.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]JSF Expression Language </title><link>http://www.blogjava.net/jwebee/archive/2008/05/22/202240.html</link><dc:creator>jwebee</dc:creator><author>jwebee</author><pubDate>Thu, 22 May 2008 04:38:00 GMT</pubDate><guid>http://www.blogjava.net/jwebee/archive/2008/05/22/202240.html</guid><wfw:comment>http://www.blogjava.net/jwebee/comments/202240.html</wfw:comment><comments>http://www.blogjava.net/jwebee/archive/2008/05/22/202240.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jwebee/comments/commentRss/202240.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jwebee/services/trackbacks/202240.html</trackback:ping><description><![CDATA[<div id="wikitext">JSF Expression Language 搭配 JSF 標籤來使用，是用來存取資料物件的一個簡易語言。<br />
<p>&nbsp;</p>
JSF EL是以#開始，將變數或運算式放置在 { 與 } 之間，例如：<br />
<pre> <br />
#{someBeanName}<br />
<br />
</pre>
<p>&nbsp;</p>
變數名稱可以是faces-config.xml中定義的名稱，如果是Bean的話，可以透過使用 '.' 運算子來存取它的屬性，例如：<br />
<pre> <br />
...<br />
&lt;f:view&gt;<br />
&lt;h:outputText value="#{userBean.name}"/&gt;<br />
&lt;/f:view&gt;<br />
...<br />
<br />
</pre>
<p>&nbsp;</p>
在JSF標籤的屬性上，" 與 " （或'與'）之間如果含有EL，則會加以運算，您也可以這麼使用它：<br />
<pre> <br />
...<br />
&lt;f:view&gt;<br />
名稱, 年齡：&lt;h:outputText <br />
value="#{userBean.name}, #{userBean.age}"/&gt;<br />
&lt;/f:view&gt;<br />
...<br />
<br />
</pre>
<p>&nbsp;</p>
一個執行的結果可能是這樣顯示的：<br />
<pre> <br />
名稱, 年齡：Justin, 29<br />
<br />
</pre>
<p>&nbsp;</p>
EL的變數名也可以程式執行過程中所宣告的名稱，或是JSF EL預設的隱含物件，例如下面的程式使用param隱含物件來取得使用者輸入的參數：<br />
<pre> <br />
&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;<br />
&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;<br />
&lt;%@page contentType="text/html; charset=Big5"%&gt;<br />
<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;f:view&gt;<br />
&lt;b&gt; 您好, &lt;h:outputText value="#{param.name}"/&gt; &lt;/b&gt;<br />
&lt;/f:view&gt;<br />
<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
<br />
</pre>
<p>&nbsp;</p>
param是JSF EL預設的隱含物件變數，它代表request所有參數的集合，實際是一個java.util.Map型態物件，JSF所提供的隱含物件，大致上對應於 <a class="wikilink" href="http://caterpillar.onlyfun.net/PmWiki/pmwiki.php/JSPServlet/ELImplicitObject">JSP 隱含物件</a>，不過JSF隱含物件移除了pageScope與pageContext，而增加了facesContext與view，它們分別對應於 javax.faces.context.FacesContext與javax.faces.component.UIViewRoot。<br />
<p>&nbsp;</p>
對於Map型態物件，我們可以使用 '.' 運算子指定key值來取出對應的value，也可以使用 [ 與 ] 來指定，例如：<br />
<pre> <br />
...<br />
&lt;f:view&gt;<br />
&lt;b&gt; 您好, &lt;h:outputText value="#{param['name']}"/&gt; &lt;/b&gt;<br />
&lt;/f:view&gt;<br />
...<br />
<br />
</pre>
<p>&nbsp;</p>
在 [ 與 ] 之間，也可以放置其它的變數值，例如：<br />
<pre> <br />
...<br />
&lt;f:view&gt;<br />
&lt;h:outputText value="#{someBean.someMap[user.name]}"/&gt; <br />
&lt;/f:view&gt;<br />
...<br />
<br />
</pre>
<p>&nbsp;</p>
如果變數是List型態或陣列的話，則可以在 [] 中指定索引，例如：<br />
<pre> <br />
....<br />
&lt;f:view&gt;<br />
&lt;h:outputText value="#{someBean.someList[0]}"/&gt; <br />
&lt;h:outputText value="#{someBean.someArray[1]}"/&gt;<br />
&lt;h:outputText<br />
value="#{someBean.someListOrArray[user.age]}"/&gt;  <br />
&lt;/f:view&gt;<br />
....<br />
<br />
</pre>
<p>&nbsp;</p>
您也可以指定字面常數，對於true、false、字串、數字，JSF EL會嘗試進行轉換，例如：<br />
<pre> <br />
....<br />
&lt;h:outputText value="#{true}"/&gt;<br />
....<br />
<br />
&lt;h:outputText value="#{'This is a test'}"/&gt;<br />
....<br />
<br />
</pre>
<p>&nbsp;</p>
如果要輸出字串，必須以單引號 ' 或雙引數 " 括住，如此才不會被認為是變數名稱。<br />
<p>&nbsp;</p>
在宣告變數名稱時，要留意不可與JSF的保留字或關鍵字同名，例如不可取以下這些名稱：<br />
<pre> <br />
true false null div mod and or not eq ne lt gt le ge instanceof empty<br />
<br />
</pre>
<p>&nbsp;</p>
使用EL，您可以直接實行一些算術運算、邏輯運算與關係運算，其使用就如同在一般常見的程式語言中之運算。 <br />
<p>&nbsp;</p>
算術運算子有：加法 (+), 減法 (-), 乘法 (*), 除法 (/ or div) 與餘除 (% or mod) 。下面是算術運算的一些例子： <br />
<table width="50%" border="1">
    <tbody>
        <tr>
            <td valign="top" align="left">運算式 </td>
            <td valign="top" align="left">結果 </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{1} </td>
            <td valign="top" align="left">1 </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{1 + 2} </td>
            <td valign="top" align="left">3 </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{1.2 + 2.3} </td>
            <td valign="top" align="left">3.5 </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{1.2E4 + 1.4} </td>
            <td valign="top" align="left">12001.4 </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{-4 - 2} </td>
            <td valign="top" align="left">-6 </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{21 * 2} </td>
            <td valign="top" align="left">42 </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{3/4} </td>
            <td valign="top" align="left">0.75 </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{3 div 4} </td>
            <td valign="top" align="left">0.75，除法 </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{3/0} </td>
            <td valign="top" align="left">Infinity </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{10%4} </td>
            <td valign="top" align="left">2 </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{10 mod 4} </td>
            <td valign="top" align="left">2，也是餘除 </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{(1==2) ? 3 : 4} </td>
            <td valign="top" align="left">4 </td>
        </tr>
    </tbody>
</table>
<p>&nbsp;</p>
如同在Java語法一樣 ( expression ? result1 : result2）是個三元運算，expression為true顯示result1，false顯示result2。 <br />
<p>&nbsp;</p>
邏輯運算有：and(或&amp;&amp;)、or(或!!)、not(或!)。一些例子為： <br />
<table width="50%" border="1">
    <tbody>
        <tr>
            <td valign="top" align="left">運算式 </td>
            <td valign="top" align="left">結果 </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{true and false} </td>
            <td valign="top" align="left">false </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{true or false} </td>
            <td valign="top" align="left">true </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{not true} </td>
            <td valign="top" align="left">false </td>
        </tr>
    </tbody>
</table>
<p>&nbsp;</p>
關係運算有：小於Less-than (&lt; or lt)、大於Greater-than (&gt; or gt)、小於或等於Less-than-or-equal (&lt;= or le)、大於或等於Greater-than-or-equal (&gt;= or ge)、等於Equal (== or eq)、不等於Not Equal (!= or ne)，由英文名稱可以得到lt、gt等運算子之縮寫詞，以下是Tomcat的一些例子： <br />
<table width="50%" border="1">
    <tbody>
        <tr>
            <td valign="top" align="left">運算式 </td>
            <td valign="top" align="left">結果 </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{1 &lt; 2} </td>
            <td valign="top" align="left">true </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{1 lt 2} </td>
            <td valign="top" align="left">true </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{1 &gt; (4/2)} </td>
            <td valign="top" align="left">false </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{1 &gt; (4/2)} </td>
            <td valign="top" align="left">false </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{4.0 &gt;= 3} </td>
            <td valign="top" align="left">true </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{4.0 ge 3} </td>
            <td valign="top" align="left">true </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{4 &lt;= 3} </td>
            <td valign="top" align="left">false </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{4 le 3} </td>
            <td valign="top" align="left">false </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{100.0 == 100} </td>
            <td valign="top" align="left">true </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{100.0 eq 100} </td>
            <td valign="top" align="left">true </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{(10*10) != 100} </td>
            <td valign="top" align="left">false </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{(10*10) ne 100} </td>
            <td valign="top" align="left">false </td>
        </tr>
    </tbody>
</table>
<p>&nbsp;</p>
左邊是運算子的使用方式，右邊的是運算結果，關係運算也可以用來比較字元或字串，按字典順序來決定比較結果，例如： <br />
<table width="50%" border="1">
    <tbody>
        <tr>
            <td valign="top" align="left">運算式 </td>
            <td valign="top" align="left">結果 </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{'a' &lt; 'b'} </td>
            <td valign="top" align="left">true </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{'hip' &gt; 'hit'} </td>
            <td valign="top" align="left">false </td>
        </tr>
        <tr>
            <td valign="top" align="left">#{'4' &gt; 3} </td>
            <td valign="top" align="left">true </td>
        </tr>
    </tbody>
</table>
<p>&nbsp;</p>
EL運算子的執行優先順序與Java運算子對應，如果有疑慮的話，也可以使用括號()來自行決定先後順序。 <br />
<p>&nbsp;</p>
</div>
<div id="printfoot"><br />
</div><img src ="http://www.blogjava.net/zhouxing/aggbug/202137.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-05-22 12:38 <a href="http://www.blogjava.net/zhouxing/archive/2008/05/22/JSFExpressionLanguage.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div><br>文章来源:<a href='http://www.blogjava.net/zhouxing/archive/2008/05/22/JSFExpressionLanguage.html'>http://www.blogjava.net/zhouxing/archive/2008/05/22/JSFExpressionLanguage.html</a><img src ="http://www.blogjava.net/jwebee/aggbug/202240.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jwebee/" target="_blank">jwebee</a> 2008-05-22 12:38 <a href="http://www.blogjava.net/jwebee/archive/2008/05/22/202240.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]導航規則設置 </title><link>http://www.blogjava.net/jwebee/archive/2008/05/22/202241.html</link><dc:creator>jwebee</dc:creator><author>jwebee</author><pubDate>Thu, 22 May 2008 04:36:00 GMT</pubDate><guid>http://www.blogjava.net/jwebee/archive/2008/05/22/202241.html</guid><wfw:comment>http://www.blogjava.net/jwebee/comments/202241.html</wfw:comment><comments>http://www.blogjava.net/jwebee/archive/2008/05/22/202241.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jwebee/comments/commentRss/202241.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jwebee/services/trackbacks/202241.html</trackback:ping><description><![CDATA[<div id="wikitext">在JSF中是根據faces-config.xml中&lt;navigation-rule&gt;設定，以決定在符合的條件成立時，該連結至哪一個頁面，一個基本的設定如下：<br />
<pre> <br />
....<br />
&lt;navigation-rule&gt;<br />
&lt;from-view-id&gt;/pages/index.jsp&lt;/from-view-id&gt;<br />
&lt;navigation-case&gt;<br />
&lt;from-outcome&gt;success&lt;/from-outcome&gt;<br />
&lt;to-view-id&gt;/pages/welcome.jsp&lt;/to-view-id&gt;<br />
&lt;/navigation-case&gt;<br />
&lt;navigation-case&gt;<br />
&lt;from-outcome&gt;failure&lt;/from-outcome&gt;<br />
&lt;to-view-id&gt;/pages/index.jsp&lt;/to-view-id&gt;<br />
&lt;/navigation-case&gt;<br />
&lt;/navigation-rule&gt;<br />
....<br />
<br />
</pre>
<p>&nbsp;</p>
對於JSF，每一個視圖（View）都有一個獨特的識別（identifier），稱之為View ID，在JSF中的View ID是從Web應用程式的環境相對路徑開始計算，設定時都是以/作為開頭，如果您請求時的路徑是/pages/index.faces，則JSF會將副檔名改為/pages/index.jsp，以此作為view-id。<br />
<p>&nbsp;</p>
在&lt;navigation-rule&gt;中的&lt;from-view-id&gt;是個選擇性的定義，它規定了來源頁面的條件，&lt;navigation-case&gt;中定義各種導覽條件，&lt;from-outcome&gt;定義當表單結果符合的條件時，各自改導向哪一個目的頁面，目的頁面是在&lt;to-view-id&gt;中定義。<br />
<p>&nbsp;</p>
您還可以在&lt;navigation-case&gt;中加入&lt;from-action&gt;，進一步規範表單結果必須根據哪一個動作方法（action method），當中是使用 <a class="wikilink" href="http://www.1cn.biz/docs/LanguageTech/JavaServerFaces/JSFExpressionLanguage.htm">JSF Expression Language</a> 來設定，例如：<br />
<pre> <br />
....<br />
&lt;navigation-rule&gt;<br />
&lt;from-view-id&gt;/pages/index.jsp&lt;/from-view-id&gt;<br />
&lt;navigation-case&gt;<br />
&lt;from-action&gt;#{user.verify}&lt;/from-action&gt;<br />
&lt;from-outcome&gt;success&lt;/from-outcome&gt;<br />
&lt;to-view-id&gt;/pages/welcome.jsp&lt;/to-view-id&gt;<br />
&lt;/navigation-case&gt;<br />
....<br />
&lt;/navigation-rule&gt;<br />
....<br />
<br />
</pre>
<p>&nbsp;</p>
在導航時，預設都是使用forward的方式，您可以在&lt;navigation-case&gt;中加入一個&lt;redirect/&gt;，讓JSF發出讓瀏覽器重新導向（redirect）的header，讓瀏覽器主動要求新網頁，例如：<br />
<pre> <br />
....<br />
&lt;navigation-rule&gt;<br />
&lt;from-view-id&gt;/pages/index.jsp&lt;/from-view-id&gt;<br />
&lt;navigation-case&gt;<br />
&lt;from-outcome&gt;success&lt;/from-outcome&gt;<br />
&lt;to-view-id&gt;/pages/welcome.jsp&lt;/to-view-id&gt;<br />
&lt;redirect/&gt;<br />
&lt;/navigation-case&gt;<br />
....<br />
&lt;/navigation-rule&gt;<br />
....<br />
<br />
</pre>
<p>&nbsp;</p>
您的來源網頁可能是某個特定模組，例如在/admin/下的頁面，您可以在&lt;from-view-id&gt;中使用wildcards，也就是使用 * 字元，例如：<br />
<pre> <br />
....<br />
&lt;navigation-rule&gt;<br />
&lt;from-view-id&gt;/admin/*&lt;/from-view-id&gt;<br />
&lt;navigation-case&gt;<br />
&lt;from-action&gt;#{user.verify}&lt;/from-action&gt;<br />
&lt;from-outcome&gt;success&lt;/from-outcome&gt;<br />
&lt;to-view-id&gt;/pages/welcome.jsp&lt;/to-view-id&gt;<br />
&lt;/navigation-case&gt;<br />
....<br />
&lt;/navigation-rule&gt;<br />
....<br />
<br />
</pre>
<p>&nbsp;</p>
在上面的設定中，只要來源網頁是從/admin來的，都可以開始測試接下來的&lt;navigation-case&gt;。<br />
<p>&nbsp;</p>
&lt;from-view-id&gt;如果沒有設定，表示來源網頁不作限制，您也可以使用 * 顯式的在定義檔中表明，例如：<br />
<pre> <br />
....<br />
&lt;navigation-rule&gt;<br />
&lt;from-view-id&gt;/*&lt;/from-view-id&gt;<br />
&lt;navigation-case&gt;<br />
....<br />
&lt;/navigation-rule&gt;<br />
....<br />
<br />
</pre>
<p>&nbsp;</p>
或者是這樣：<br />
<pre> <br />
....<br />
&lt;navigation-rule&gt;<br />
&lt;from-view-id&gt;*&lt;/from-view-id&gt;<br />
&lt;navigation-case&gt;<br />
....<br />
&lt;/navigation-rule&gt;<br />
....<br />
<br />
</pre>
</div>
<div id="printfoot"><br />
</div><img src ="http://www.blogjava.net/zhouxing/aggbug/202136.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-05-22 12:36 <a href="http://www.blogjava.net/zhouxing/archive/2008/05/22/ConfigNavigationRule.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div><br>文章来源:<a href='http://www.blogjava.net/zhouxing/archive/2008/05/22/ConfigNavigationRule.html'>http://www.blogjava.net/zhouxing/archive/2008/05/22/ConfigNavigationRule.html</a><img src ="http://www.blogjava.net/jwebee/aggbug/202241.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jwebee/" target="_blank">jwebee</a> 2008-05-22 12:36 <a href="http://www.blogjava.net/jwebee/archive/2008/05/22/202241.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]簡單的導航（Navigation） </title><link>http://www.blogjava.net/jwebee/archive/2008/05/22/202242.html</link><dc:creator>jwebee</dc:creator><author>jwebee</author><pubDate>Thu, 22 May 2008 04:35:00 GMT</pubDate><guid>http://www.blogjava.net/jwebee/archive/2008/05/22/202242.html</guid><wfw:comment>http://www.blogjava.net/jwebee/comments/202242.html</wfw:comment><comments>http://www.blogjava.net/jwebee/archive/2008/05/22/202242.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jwebee/comments/commentRss/202242.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jwebee/services/trackbacks/202242.html</trackback:ping><description><![CDATA[<div id="wikitext">在 <a class="wikilink" href="http://www.1cn.biz/docs/LanguageTech/JavaServerFaces/FirstJSF.htm">第一個JSF程式</a> 中，我們簡單的定義了頁面的流程由 index.jsp 到 welcome.jsp，接下來我們擴充程式，讓它可以根據使用者輸入的名稱與密碼是否正確，決定要顯示歡迎訊息或是將使用者送回原頁面進行重新登入。<br />
<p>&nbsp;</p>
首先我們修改一下UserBean：<br />
<ul>
    <li>UserBean.java </li>
</ul>
<pre> <br />
package onlyfun.caterpillar;<br />
<br />
public class UserBean {<br />
private String name;<br />
private String password;<br />
private String errMessage;<br />
<br />
public void setName(String name) {<br />
this.name = name;<br />
}<br />
<br />
public String getName() {<br />
return name;<br />
}<br />
<br />
public void setPassword(String password) {<br />
this.password = password;<br />
}<br />
<br />
public String getPassword() {<br />
return password;<br />
}<br />
<br />
public void setErrMessage(String errMessage) {<br />
this.errMessage = errMessage;<br />
}<br />
<br />
public String getErrMessage() {<br />
return errMessage;<br />
}<br />
<br />
public String verify() {<br />
if(!name.equals("justin") ||<br />
!password.equals("123456")) {<br />
errMessage = "名稱或密碼錯誤";<br />
return "failure";<br />
}<br />
else {<br />
return "success";<br />
}<br />
}<br />
}<br />
<br />
</pre>
<p>&nbsp;</p>
在UserBean中，我們增加了密碼與錯誤訊息屬性，在verify()方法中，我們檢查使用者名稱與密碼，它傳回一個字串，"failure"表示登入錯誤，並會設定錯誤訊息，而"success"表示登入正確，這個傳回的字串將決定頁面的流程。<br />
<p>&nbsp;</p>
接下來我們修改一下 faces-config.xml 中的頁面流程定義：<br />
<ul>
    <li>faces-config.xml </li>
</ul>
<pre> <br />
&lt;?xml version="1.0"?&gt;<br />
&lt;!DOCTYPE faces-config PUBLIC<br />
"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"<br />
"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"&gt;<br />
<br />
&lt;faces-config&gt;<br />
&lt;navigation-rule&gt;<br />
&lt;from-view-id&gt;/pages/index.jsp&lt;/from-view-id&gt;<br />
&lt;navigation-case&gt;<br />
&lt;from-outcome&gt;success&lt;/from-outcome&gt;<br />
&lt;to-view-id&gt;/pages/welcome.jsp&lt;/to-view-id&gt;<br />
&lt;/navigation-case&gt;<br />
&lt;navigation-case&gt;<br />
&lt;from-outcome&gt;failure&lt;/from-outcome&gt;<br />
&lt;to-view-id&gt;/pages/index.jsp&lt;/to-view-id&gt;<br />
&lt;/navigation-case&gt;<br />
&lt;/navigation-rule&gt;<br />
<br />
&lt;managed-bean&gt;<br />
&lt;managed-bean-name&gt;user&lt;/managed-bean-name&gt;<br />
&lt;managed-bean-class&gt;<br />
onlyfun.caterpillar.UserBean<br />
&lt;/managed-bean-class&gt;<br />
&lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;<br />
&lt;/managed-bean&gt;<br />
&lt;/faces-config&gt;<br />
<br />
</pre>
<p>&nbsp;</p>
根據上面的定義，當傳回的字串是"success"時，將前往 welcome.jsp，如果是"failure"的話，將送回 index.jsp。<br />
<p>&nbsp;</p>
接下來告訴網頁設計人員Bean名稱與相關屬性，以及決定頁面流程的verify名稱，我們修改 index.jsp 如下：<br />
<ul>
    <li>index.jsp </li>
</ul>
<pre> <br />
&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;<br />
&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;<br />
&lt;%@page contentType="text/html;charset=Big5"%&gt; <br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;第一個JSF程式&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;f:view&gt;<br />
&lt;h:form&gt;<br />
&lt;h3&gt;請輸入您的名稱&lt;/h3&gt;<br />
&lt;h:outputText value="#{user.errMessage}"/&gt;&lt;p&gt;<br />
名稱: &lt;h:inputText value="#{user.name}"/&gt;&lt;p&gt;<br />
密碼: &lt;h:inputSecret value="#{user.password}"/&gt;&lt;p&gt; <br />
&lt;h:commandButton value="送出" <br />
action="#{user.verify}"/&gt;<br />
&lt;/h:form&gt;<br />
&lt;/f:view&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
<br />
</pre>
<p>&nbsp;</p>
當要根據verify運行結果來決定頁面流程時，action屬性中使用 <a class="wikilink" href="http://www.1cn.biz/docs/LanguageTech/JavaServerFaces/JSFExpressionLanguage.htm">JSF Expression Language</a> "#{user.verify}"，如此JSF就知道必須根據verify傳回的結果來導航頁面。<br />
<p>&nbsp;</p>
&lt;h:outputText&gt;可以取出指定的Bean之屬性值，當使用者因驗證錯誤而被送回原頁面時，這個錯誤訊息就可以顯示在頁面上。<br />
</div><img src ="http://www.blogjava.net/zhouxing/aggbug/202134.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-05-22 12:35 <a href="http://www.blogjava.net/zhouxing/archive/2008/05/22/SimpleNavigation.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div><br>文章来源:<a href='http://www.blogjava.net/zhouxing/archive/2008/05/22/SimpleNavigation.html'>http://www.blogjava.net/zhouxing/archive/2008/05/22/SimpleNavigation.html</a><img src ="http://www.blogjava.net/jwebee/aggbug/202242.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jwebee/" target="_blank">jwebee</a> 2008-05-22 12:35 <a href="http://www.blogjava.net/jwebee/archive/2008/05/22/202242.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]第一個 JSF 程式 </title><link>http://www.blogjava.net/jwebee/archive/2008/05/22/202243.html</link><dc:creator>jwebee</dc:creator><author>jwebee</author><pubDate>Thu, 22 May 2008 04:34:00 GMT</pubDate><guid>http://www.blogjava.net/jwebee/archive/2008/05/22/202243.html</guid><wfw:comment>http://www.blogjava.net/jwebee/comments/202243.html</wfw:comment><comments>http://www.blogjava.net/jwebee/archive/2008/05/22/202243.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jwebee/comments/commentRss/202243.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jwebee/services/trackbacks/202243.html</trackback:ping><description><![CDATA[<div id="wikitext">現在可以開發一個簡單的程式了，我們將設計一個簡單的登入程式，使用者送出名稱，之後由程式顯示使用者名稱及歡迎訊息。<br />
<p>&nbsp;</p>
<h2>程式開發人員</h2>
先看看應用程式開發人員要作些什麼事，我們撰寫一個簡單的JavaBean：<br />
<ul>
    <li>UserBean.java </li>
</ul>
<pre> <br />
package onlyfun.caterpillar;<br />
<br />
public class UserBean {<br />
private String name;<br />
<br />
public void setName(String name) {<br />
this.name = name;<br />
}<br />
<br />
public String getName() {<br />
return name;<br />
}<br />
}<br />
<br />
</pre>
<p>&nbsp;</p>
這個Bean將儲存使用者的名稱，編譯好之後放置在/WEB-INF/classes下。<br />
<p>&nbsp;</p>
接下來設計頁面流程，我們將先顯示一個登入網頁/pages/index.jsp，使用者填入名稱並送出表單，之後在 /pages/welcome.jsp中顯示Bean中的使用者名稱與歡迎訊息。<br />
<p>&nbsp;</p>
為了讓JSF知道我們所設計的Bean以及頁面流程，我們定義一個/WEB-INF/faces-config.xml：<br />
<ul>
    <li>faces-config.xml </li>
</ul>
<pre> <br />
&lt;?xml version="1.0"?&gt;<br />
&lt;!DOCTYPE faces-config PUBLIC<br />
"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"<br />
"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"&gt;<br />
<br />
&lt;faces-config&gt;<br />
&lt;navigation-rule&gt;<br />
&lt;from-view-id&gt;/pages/index.jsp&lt;/from-view-id&gt;<br />
&lt;navigation-case&gt;<br />
&lt;from-outcome&gt;login&lt;/from-outcome&gt;<br />
&lt;to-view-id&gt;/pages/welcome.jsp&lt;/to-view-id&gt;<br />
&lt;/navigation-case&gt;<br />
&lt;/navigation-rule&gt;<br />
<br />
&lt;managed-bean&gt;<br />
&lt;managed-bean-name&gt;user&lt;/managed-bean-name&gt;<br />
&lt;managed-bean-class&gt;<br />
onlyfun.caterpillar.UserBean<br />
&lt;/managed-bean-class&gt;<br />
&lt;managed-bean-scope&gt;session&lt;/managed-bean-scope&gt;<br />
&lt;/managed-bean&gt;<br />
&lt;/faces-config&gt;<br />
<br />
</pre>
<p>&nbsp;</p>
在&lt;navigation-rule&gt;中，我們定義了頁面流程，當請求來自&lt;from-view- id&gt;中指定的頁面，並且指定了&lt;navigation-case&gt;中的&lt;from-outcome&gt;為login時，則會將請求導向至&lt;to-view-id&gt;所指定的頁面。<br />
<p>&nbsp;</p>
在&lt;managed-bean&gt;中我們可以統一管理我們的Bean，我們設定Bean物件的存活範圍是session，也就是使用者開啟瀏覽器與程式互動過程中都存活。<br />
<p>&nbsp;</p>
接下來要告訴網頁設計人員的資訊是，他們可以使用的Bean名稱，即&lt;managed-bean-name&gt;中設定的名稱，以及上面所定義的頁面流程。<br />
<p>&nbsp;</p>
<h2>網頁設計人員</h2>
<p>&nbsp;</p>
首先網頁設計人員撰寫index.jsp網頁：<br />
<ul>
    <li>index.jsp </li>
</ul>
<pre> <br />
&lt;%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;<br />
&lt;%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;<br />
&lt;%@page contentType="text/html;charset=Big5"%&gt; <br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;第一個JSF程式&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;f:view&gt;<br />
&lt;h:form&gt;<br />
&lt;h3&gt;請輸入您的名稱&lt;/h3&gt;<br />
名稱: &lt;h:inputText value="#{user.name}"/&gt;&lt;p&gt;<br />
&lt;h:commandButton value="送出" action="login"/&gt;<br />
&lt;/h:form&gt;<br />
&lt;/f:view&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
<br />
</pre>
<p>&nbsp;</p>
我們使用了JSF的core與html標籤庫，core是有關於UI元件的處理，而html則是有關於HTML的進階標籤。<br />
<p>&nbsp;</p>
&lt;f:view&gt;與&lt;html&gt;有類似的作用，當您要開始使用JSF元件時，這些元件一定要在&lt;f: view&gt;與&lt;/f:view&gt;之間，就如同使用HTML時，所有的標籤一定要在&lt;html&gt;與&lt; /html&gt;之間。<br />
<p>&nbsp;</p>
html標籤庫中幾乎都是與HTML標籤相關的進階標籤，&lt;h:form&gt;會產生一個表單，我們使用&lt;h: inputText&gt;來顯示user這個Bean物件的name屬性，而&lt;h:commandButton&gt;會產生一個提交按鈕，我們在action屬性中指定將根據之前定義的login頁面流程中前往welcome.jsp頁面。<br />
<p>&nbsp;</p>
網頁設計人員不必理會表單傳送之後要作些什麼，他只要設計好歡迎頁面就好了：<br />
<ul>
    <li>welcome.jsp </li>
</ul>
<pre> <br />
&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;<br />
&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;<br />
&lt;%@page contentType="text/html;charset=Big5"%&gt; <br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;第一個JSF程式&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;f:view&gt;<br />
&lt;h:outputText value="#{user.name}"/&gt; 您好！<br />
&lt;h3&gt;歡迎使用 JavaServer Faces！&lt;/h3&gt;<br />
&lt;/f:view&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
<br />
</pre>
<p>&nbsp;</p>
這個頁面沒什麼需要解釋的了，如您所看到的，在網頁上沒有程式邏輯，網頁設計人員所作的就是遵照頁面流程，使用相關名稱取出資料，而不用擔心實際上程式是如何運作的。<br />
<p>&nbsp;</p>
接下來啟動Container，連接上您的應用程式網址，例如：http://localhost: 8080/jsfDemo/pages/index.faces，填入名稱並送出表單，您的歡迎頁面就會顯示了。<br />
</div><img src ="http://www.blogjava.net/zhouxing/aggbug/202133.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-05-22 12:34 <a href="http://www.blogjava.net/zhouxing/archive/2008/05/22/FirstJSF.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div><br>文章来源:<a href='http://www.blogjava.net/zhouxing/archive/2008/05/22/FirstJSF.html'>http://www.blogjava.net/zhouxing/archive/2008/05/22/FirstJSF.html</a><img src ="http://www.blogjava.net/jwebee/aggbug/202243.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jwebee/" target="_blank">jwebee</a> 2008-05-22 12:34 <a href="http://www.blogjava.net/jwebee/archive/2008/05/22/202243.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]簡介 JSF </title><link>http://www.blogjava.net/jwebee/archive/2008/05/22/202244.html</link><dc:creator>jwebee</dc:creator><author>jwebee</author><pubDate>Thu, 22 May 2008 04:32:00 GMT</pubDate><guid>http://www.blogjava.net/jwebee/archive/2008/05/22/202244.html</guid><wfw:comment>http://www.blogjava.net/jwebee/comments/202244.html</wfw:comment><comments>http://www.blogjava.net/jwebee/archive/2008/05/22/202244.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jwebee/comments/commentRss/202244.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jwebee/services/trackbacks/202244.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/zhouxing/archive/2008/05/22/IntroduceJSF.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouxing/aggbug/202132.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-05-22 12:32 <a href="http://www.blogjava.net/zhouxing/archive/2008/05/22/IntroduceJSF.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div><br>文章来源:<a href='http://www.blogjava.net/zhouxing/archive/2008/05/22/IntroduceJSF.html'>http://www.blogjava.net/zhouxing/archive/2008/05/22/IntroduceJSF.html</a><img src ="http://www.blogjava.net/jwebee/aggbug/202244.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jwebee/" target="_blank">jwebee</a> 2008-05-22 12:32 <a href="http://www.blogjava.net/jwebee/archive/2008/05/22/202244.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]JavaServer Faces</title><link>http://www.blogjava.net/jwebee/archive/2008/05/22/202245.html</link><dc:creator>jwebee</dc:creator><author>jwebee</author><pubDate>Thu, 22 May 2008 04:31:00 GMT</pubDate><guid>http://www.blogjava.net/jwebee/archive/2008/05/22/202245.html</guid><wfw:comment>http://www.blogjava.net/jwebee/comments/202245.html</wfw:comment><comments>http://www.blogjava.net/jwebee/archive/2008/05/22/202245.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jwebee/comments/commentRss/202245.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jwebee/services/trackbacks/202245.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: JavaServer Faces [http://java.sun.com/j2ee/javaserverfaces/] 於2004年三月1.0版正式提出，清楚的將Web應用程式的開發者劃分了三個角色：網頁設計人員、應用程式設計人員以及UI元件開發人員。從使用的角度來看，網頁設計人員與應用程式設計人員可以他們所熟悉的方式開發程式，而不用侵入彼此的工作範圍，而UI元件開發人員可以獨立的開發個別元件，細節的部份留給了他們來處理。&nbsp;&nbsp;<a href='http://www.blogjava.net/zhouxing/archive/2008/05/22/javaserverfaces.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouxing/aggbug/202130.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-05-22 12:31 <a href="http://www.blogjava.net/zhouxing/archive/2008/05/22/javaserverfaces.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div><br>文章来源:<a href='http://www.blogjava.net/zhouxing/archive/2008/05/22/javaserverfaces.html'>http://www.blogjava.net/zhouxing/archive/2008/05/22/javaserverfaces.html</a><img src ="http://www.blogjava.net/jwebee/aggbug/202245.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jwebee/" target="_blank">jwebee</a> 2008-05-22 12:31 <a href="http://www.blogjava.net/jwebee/archive/2008/05/22/202245.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]架构师</title><link>http://www.blogjava.net/jwebee/archive/2008/05/20/202246.html</link><dc:creator>jwebee</dc:creator><author>jwebee</author><pubDate>Tue, 20 May 2008 04:42:00 GMT</pubDate><guid>http://www.blogjava.net/jwebee/archive/2008/05/20/202246.html</guid><wfw:comment>http://www.blogjava.net/jwebee/comments/202246.html</wfw:comment><comments>http://www.blogjava.net/jwebee/archive/2008/05/20/202246.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jwebee/comments/commentRss/202246.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jwebee/services/trackbacks/202246.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 软件架构师是软件行业中一种新兴职业，工作职责是在一个软件项目开发过程中，将客户的需求转换为规范的开发计划及文本，并制定这个项目的总体架构，指导整个开发团队完成这个计划。架构师的主要任务不是从事具体的软件程序的编写，而是从事更高层次的开发构架工作。他必须对开发技术非常了解，并且需要有良好的组织管理能力。可以这样说，一个架构师工作的好坏决定了整个软件开发项目的成败。<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/zhouxing/archive/2008/05/20/201614.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouxing/aggbug/201614.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-05-20 12:42 <a href="http://www.blogjava.net/zhouxing/archive/2008/05/20/201614.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div><br>文章来源:<a href='http://www.blogjava.net/zhouxing/archive/2008/05/20/201614.html'>http://www.blogjava.net/zhouxing/archive/2008/05/20/201614.html</a><img src ="http://www.blogjava.net/jwebee/aggbug/202246.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jwebee/" target="_blank">jwebee</a> 2008-05-20 12:42 <a href="http://www.blogjava.net/jwebee/archive/2008/05/20/202246.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]软件架构</title><link>http://www.blogjava.net/jwebee/archive/2008/05/12/202247.html</link><dc:creator>jwebee</dc:creator><author>jwebee</author><pubDate>Mon, 12 May 2008 09:01:00 GMT</pubDate><guid>http://www.blogjava.net/jwebee/archive/2008/05/12/202247.html</guid><wfw:comment>http://www.blogjava.net/jwebee/comments/202247.html</wfw:comment><comments>http://www.blogjava.net/jwebee/archive/2008/05/12/202247.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jwebee/comments/commentRss/202247.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jwebee/services/trackbacks/202247.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 软件架构（software architecture）是一系列相关的抽象模式，用于指导大型软件系统各个方面的设计。 软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段，这些抽象组件被细化为实际的组件，比如具体某个类或者对象。在面向对象领域中，组件之间的连接通常用接口(计算机科学)来实现。&nbsp;&nbsp;<a href='http://www.blogjava.net/zhouxing/archive/2008/05/12/software_architecture.html'>阅读全文</a><img src ="http://www.blogjava.net/zhouxing/aggbug/200053.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxing/" target="_blank">周行</a> 2008-05-12 17:01 <a href="http://www.blogjava.net/zhouxing/archive/2008/05/12/software_architecture.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div><br>文章来源:<a href='http://www.blogjava.net/zhouxing/archive/2008/05/12/software_architecture.html'>http://www.blogjava.net/zhouxing/archive/2008/05/12/software_architecture.html</a><img src ="http://www.blogjava.net/jwebee/aggbug/202247.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jwebee/" target="_blank">jwebee</a> 2008-05-12 17:01 <a href="http://www.blogjava.net/jwebee/archive/2008/05/12/202247.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>