jeffy

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            70 Posts :: 1 Stories :: 14 Comments :: 0 Trackbacks

          #

          ? JIRA3.5.2

          Jira 介紹

          Jira 是集項目計劃、任務分配、需求管理、錯誤跟蹤于一體的商業軟件。目前最新版本為 3.5.2 。下載地址: http://www.atlassian.com/software/jira ,要求注冊為用戶,選擇 Enterprise 版本 atlassian-jira-enterprise-3.5.2-standalone.zip 下載。可以免費試用一個月,網上也有破解方法。方法就是反編譯 genkey.class,? 更改類包后,再編譯執行。 Jira 默認數據庫是 hsql 。在 3.1 版本不支持 JDK1.5 ,在 .3.5.2 已經支持 JDK1.5

          Jira 安裝

          假使 JDK1.5.0.04 ,已經設置 JAVA_HOME 的環境變量。

          安裝 JIRA3.5.2+Tomcat5.0.28+ PostGreSQL 8.1

          ?1. 把下載的類包解壓到 C:\jira3.5.2 目錄。

          ?2. tomcat5.0.28 的目錄下面 C:\jakarta-tomcat-5.0.28\conf\Catalina\localhost 添加一個 jira.xml, 內容如下:

          <Context path="/jira" docBase="C:\jira3.5.2\atlassian-jira" debug="0" reload="true" reloadable="true">?? //? 其中 /jira url 的路徑, docBase jira web 目錄

          <Resource name="jdbc/JiraDS" auth="Container" type="javax.sql.DataSource"/>

          ??? <ResourceParams name="jdbc/JiraDS">

          ????????? <parameter>

          ????????????? <name>driverClassName</name>

          ?????????? <!-- NOTE: if you change the database type, you will need to change it in atlassian-jira/WEB-INF/classes/entityengine.xml -->

          ??????????????? <value>org.postgresql.Driver</value>? //PG 的驅動設置

          ????????? </parameter>

          ????????? <parameter>

          ??????????????? <name>url</name>

          ??????????????? <value>jdbc:postgresql://localhost/Jira</value> //jdbc:url 設置

          ??????????? </parameter>

          ??????????? <parameter>

          ???????????????? <name>username</name>

          ??????????????? ?<value>Administrator</value>??? // 訪問 PG 數據庫的用戶名

          ??????????? </parameter>

          ??????????? <parameter>

          ?????????? ???????<name>password</name>

          ????????????????? <value>55555555</value>????? // 訪問 PG 數據庫的 password

          ???????????? </parameter>

          ?

          ???????? <!-- NOTE: If NOT using hsqldb, comment next two parameters out -->

          ???????????? <!-- Give unused connections 4 secs before eviction. -->

          ?????????????? <parameter>

          ?????????????????? <name>minEvictableIdleTimeMillis</name>

          ???????????????????? <value>4000</value>

          ???????????????? </parameter>

          ???????????? <!-- Check for evictions every 5 secs. -->

          ??????????????? <parameter>

          ? ???????????????????<name>timeBetweenEvictionRunsMillis</name>

          ???????????????????? <value>5000</value>

          ???????????????? </parameter>

          ?

          ????? ???<parameter>

          ????????????????? <name>factory</name>

          <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>

          ????????? </parameter>

          ?????????????????? </ResourceParams>

          ????? ??????????????<Resource name="UserTransaction" auth="Container" type="javax.transaction.UserTransaction"/>

          ?????????????????? ? ?<ResourceParams name="UserTransaction">

          ????????????????????? ??<parameter>

          ??????????????????????????? <name>factory</name>

          ??????????????????????????? <value>org.objectweb.jotm.UserTransactionFactory</value>

          ??????????????????????? </parameter>

          ??????????????????????? <parameter>

          ??????????????????????????? <name>jotm.timeout</name>

          ??????????????????????????? <value>60</value>

          ??????????????????????? </parameter>

          ??????????????????? </ResourceParams>

          </Context>

          ?

          3. 修改 Jira 的數據庫配置文件 : C:\jira3.5.2 \atlassian-jira\WEB-INF\classes\entityengine.xml ,把數據庫類型改為 PG

          ? <datasource name="defaultDS" field-type-name="postgres72" ?schema-name="public"

          (pg 版本是 8.1 ,需要 type-name postgres72 )

          4. PG jdbc 驅動 postgresql-8.1-404.jdbc3.jar? 拷貝到 Tomcat5.0.28 common\lib 目錄下面。比較 C:\jira3.5.2\common\lib 下面的類包與 Tomcat5.0.28 common\lib 目錄下面的類包,如果 Tomcat5.0.28 common\lib 目錄下面缺少,就從 C:\jira3.5.2\common\lib 下面 copy 過來。

          5. 點擊 Tomcat5.0.28 bin 目錄下面的 startup.bat, 開始運行 jira3.5.2

          啟動之后, IE 中輸入 http://localhost:8080/jira 正常情況就能啟動,它會提示你要求輸入 License Key, 把破解的 license key 輸入即可。

          posted @ 2006-03-23 13:51 Live-in Java 閱讀(468) | 評論 (0)編輯 收藏

               摘要: 1、快速入門 (1)模板 + 數據模型 = 輸出 l         FreeMarker基于設計者和程序員是具有不同專業技能的不同個體的觀念 l         他們是分工勞動的:設計者專注于表示——創建HTML文件、圖片、W...  閱讀全文
          posted @ 2006-03-02 17:17 Live-in Java 閱讀(430) | 評論 (0)編輯 收藏

               摘要: 一、Axis安裝1.測試環境    JDK 1.5    Servlet Container: Tomcat 5.5 2.下載地址:http://ws.apache.org/axis/3.解壓縮安裝包,將$AXIS_UNZIP_PATH\axis-version\webapps下的axis包拷貝到$TOMCAT_HOME\web...  閱讀全文
          posted @ 2006-03-02 17:08 Live-in Java 閱讀(565) | 評論 (0)編輯 收藏

          . 綜述
          0.1 目標
          配置一個可擴展、高可用、有負載均衡和錯誤恢復的 Tomcat 集群

          0.2 許可協議
          GNU Free Documentation License 允許任意轉載,但請保持本文檔的完整性如有修改,務請通知作者

          1. 下載
          1.1
          Tomcat
          1.2 Tomcat 會話復制庫

          2. 安裝
          2.1 第一個 Tomcat

              $tar vfxz jakarta-tomcat-4.1.27.tar.gz
              $cp -R jakarta-tomcat-4.1.27 /www/server/tomcat1

          2.2 第二個 Tomcat
          # 暫時不安裝,等配置好的一個 Tomcat 后,直接復制得到副本,在副本的基礎上修改得到

          2.3 JK2
          # 請參考
          《Linux 下安裝支持 JSP/PHP 的 WEB server》一文編譯.

          3. 配置
          3.1 Apache 的 JK2 配置文件 workers2.properties
          # 這個是 Apache 的 JK2 配置文件,位于 Apache 安裝目錄下的 conf 目錄中,如果原來沒有這個文件,新建一個
          # 內容如下

          $vi workers2.properties
              [shm]
              file=${serverRoot}/logs/shm.file
              size=1048576
           
              # First Tomcat
              [channel.socket:tomcat1]
              port=11009
              host=127.0.0.1
           
              [ajp13:tomcat1]
              channel=channel.socket:tomcat1
           
              # Second Tomcat
              [channel.socket:tomcat2]
              port=12009
              host=127.0.0.1
           
              [ajp13:tomcat2]
              channel=channel.socket:tomcat2
           
              # Load Balance
              [lb:lb1]
              worker=ajp13:tomcat1
              worker=ajp13:tomcat2
           
              # Uri mapping
              [uri:/*.jsp]
              group=lb:lb1

          3.2 第一個 Tomcat 的 JK2 配置文件 jk2.properties
          # 這個是第一個 Tomcat 的 JK2 配置文件,位于第一個 Tomcat 安裝目錄下的 conf 目錄中
          # 找到 channelSocket.port=8009
          # 取消注釋,并修改為

              channelSocket.port=11009

          3.3 第一個 Tomcat 的配置文件 server.xml
          # 這個是第一個 Tomcat 的配置文件,位于第一個 Tomcat 安裝目錄下的 conf 目錄中
          # 找到

              <Server port="8005" shutdown="SHUTDOWN" debug="0">

          # 修改為

              <Server port="11005" shutdown="SHUTDOWN" debug="0">

          # 開啟 JK2 AJP connector,關閉其它 connector (也就是把其它的 connector 刪除或注釋掉)
          #
          修改 JK2 AJP connector 的端口為 11009,修改后的 connector 可能會象下面的樣子

              <Connector className="org.apache.ajp.tomcat4.Ajp13Connector"
                  port="11009"
                  minProcessors="5"
                  maxProcessors="75"
                  acceptCount="10"
                  debug="0"/>

          # 為需要集群支持的 webapp context,添加如下manager

              <Valve className="org.apache.catalina.session.ReplicationValve"
                  filter=".*\.gif;.*\.jpg;.*\.jpeg;.*\.js"
                  debug="0"/>
              <Manager className="org.apache.catalina.session.InMemoryReplicationManager"
                  debug="10"
                  printToScreen="true"
                  saveOnRestart="false"
                  maxActiveSessions="-1"
                  minIdleSwap="-1"
                  maxIdleSwap="-1"
                  maxIdleBackup="-1"
                  pathname="null"
                  printSessionInfo="true"
                  checkInterval="10"
                  expireSessionsOnShutdown="false"
                  serviceclass="org.apache.catalina.cluster.mcast.McastService"
                  mcastAddr="228.1.2.3"
                  mcastPort="45566"
                  mcastFrequency="500"
                  mcastDropTime="5000"
                  tcpListenAddress="auto"
                  tcpListenPort="4001"
                  tcpSelectorTimeout="100"
                  tcpThreadCount="2"
                  useDirtyFlag="true">
                  </Manager>

          3.4 第一個 Tomcat 的啟動腳本 catalina.sh
          # 這個是第一個 Tomcat 的 啟動腳本,位于第一個 Tomcat 安裝目錄下的 bin 目錄中
          # 添加啟動環境變量如下

              JAVA_HOME=/usr/java/jdk
                CATALINA_HOME=/www/server/tomcat1

          # 此處的 JAVA_HOME 指向系統實際安裝 JDK 的路徑
          #
          此處的 CATALINA_HOME 指向第一個 Tomcat 的安裝路徑

          3.5 由第一個 Tomcat 復制得到第二個 Tomcat

              cp -R tomcat1 tomcat2

          3.6 第二個 Tomcat 的 JK2 配置文件 jk2.properties
          # 參考 3.2
          # 修改 channelSocket.port 為

              channelSocket.port=12009

          # 注意和第一個 Tomcat 的差別

          3.7 第二個 Tomcat 的配置文件 server.xml
          # 參考 3.3
          # 修改關閉端口為

              <Server port="12005" shutdown="SHUTDOWN" debug="0">

          # 修改 JK2 AJP connector 的端口為 12009,修改后的 connector 可能會象下面的樣子

              <Connector className="org.apache.ajp.tomcat4.Ajp13Connector"
                  port="12009"
                  minProcessors="5"
                  maxProcessors="75"
                  acceptCount="10"
                  debug="0"/>

          # 注意和第一個 Tomcat 的差別

          3.8 第二個 Tomcat 的啟動腳本 catalina.sh
          # 參考 3.4
          # 添加啟動環境變量如下

              JAVA_HOME=/usr/java/jdk
                CATALINA_HOME=/www/server/tomcat2

          # 此處的 JAVA_HOME 指向系統實際安裝 JDK 的路徑
          #
          此處的 CATALINA_HOME 指向第二個 Tomcat 的安裝路徑
          #
          注意和第一個 Tomcat 的差別

          4. 完成
          4.1 重起 Apache

               $apache/bin/apachectl graceful

          4.2 啟動第一個 Tomcat

               $tomcat1/bin/catalina.sh start

          4.3 啟動第二個 Tomcat

               $tomcat2/bin/catalina.sh start

          5. 參考文獻
          http://www-900.ibm.com/developerWorks/cn/java/l-jetspeed/
          http://www.filip.net/tomcat/
          (申明:本文來源于網絡,摘錄于此,僅為日后方便查看)

          posted @ 2006-03-02 17:05 Live-in Java 閱讀(271) | 評論 (0)編輯 收藏

          揚子江:http://blog.video.com.cn/andy/subject/177.shtml
          posted @ 2006-03-02 16:21 Live-in Java 閱讀(254) | 評論 (0)編輯 收藏

          WebWork項目建立在XWork項目上。入口Servlet是WebWork項目中定義的ServletDispatcher,而Action在XWork項目中定義。
          XWork Action接口的execute()方法沒有參數,不像Struts Action那樣接受request, response參數,所以XWork Action能夠脫離Web環境被直接調用,便于單元測試。
          這里引入了一個問題。沒有了request參數,那么XWork Action如何獲得request parameters作為輸入數據?又通過什么橋梁(Struts用request.setAttribute)把結果數據傳送到View層?
          在Web Work中,只能通過Action本身的getter, setter屬性來傳送輸入參數和輸出結果。
          比如,我們有這樣一個實現了XWork Action接口的類,


          YourAction implements Action{
          int productId = null;
          String productName = null;
          public void setProductId(int productId){this.productId = productId;}
          public String getProductName(){return productName;}
          public String execute(){
          productName = findNameById(productId);
          return “success”;
          }
          }
          這個類里面的productId將接受request輸入參數,productName是輸出到頁面顯示的結果。
          比如,這樣的請求,http://yourhost/yourapp/MyAction.action?productId=1
          Web Work會把1填到YourAction的productId里面,然后執行execute()方法,JSP里的語句<ww:property value=“productName”>會把YourAction的productName顯示在頁面上。

          如果一個Web Framework采用了這種屏蔽Action的request, response參數的設計方式,一般也同時會采用這種Action和輸入輸出數據結合成一體的解決方式。類似的情形也存在于Tapestry和Maverick中,后面會講到。

          當WebWork ServletDispatcher接收到HTTP Request的時候,首先把所有相關的信息(包括request, response, session, servlet config, servelt context, 所有request參數)等存放到AcationContext中,然后根據Interceptor配置信息,生成一個YourAction的動態代理類對象。實際上運行的正是這個代理對象,如同Servlet Filter的工作機制一般,所有注入的Interceptor方法會先于Actio方法運行。

          我們來看一下Action和Interceptor的地位:Action沒有參數,無法獲得ActionContext;而Interceptor接受的ActionInvoication參數擁有包括ActionContext在內的所有重要信息。
          這種權力分配的不平等,注定了Action的作用非常有限,只限于調用商業邏輯,然后返回一個成功與否標志。所有與外部Web世界打交道、協調內部工作流程的重擔,都責無旁貸地落在Interceptor的肩上。
          我們可以設想一個極端的例子。我們聲明一批不做任何事情的空Action,我們只是需要它們的空殼類名;我們制作一批對應的Interceptor,所有的轉發控制、商業邏輯都在Interceptor上實現,然后把Interceptor都注入到對應的空Action。這在理論上是完全可行的。
          在Web海洋的包圍中,Action可少,Interceptor不可少。Action是一個孤島,如果沒有外來盟友Interceptor的協助,只能在自己的小范圍內獨立作戰(比如Unit Test),而對整體大局的作戰目標無法產生影響。
          下面我們來看一下Action是如何在Interceptor的全程監管下工作的。
          在WebWork中,我們需要如下配置XWork.xml。
          <xwork>

          <!-- Include webwork defaults (from WebWork-2.1 JAR). -->
          <include file="webwork-default.xml" />
          <!-- Configuration for the default package. -->
          <package name="default" extends="webwork-default">
          <!-- Default interceptor stack. -->
          <default-interceptor-ref name=" defaultStack" />
          <!-- Action: YourAction. -->
          <action name="youraction" class="yourapp.YourAction">
          <result name="success" type="dispatcher">
          YourAction.jsp
          </result>
          </action>
          </package>
          </xwork>

          webwork-default.xml里面的相關定義如下:
          <interceptors>
          <interceptor name="validation" class="com.opensymphony.xwork.validator.ValidationInterceptor"/>
          <interceptor name="static-params" class="com.opensymphony.xwork.interceptor.
          StaticParametersInterceptor"/>
          <interceptor name="params" class="com.opensymphony.xwork.interceptor.ParametersInterceptor "/>
          <interceptor name="conversionError" class="com.opensymphony.webwork.interceptor.
          WebWorkConversionErrorInterceptor"/>
          <interceptor-stack name="defaultStack">
            <interceptor-ref name="static-params"/>
            <interceptor-ref name="params"/>
            <interceptor-ref name="conversionError"/>
          </interceptor-stack>
          </interceptors>

          從上述的配置信息中可以看出,YourAction執行execute()方法的前后,會被
          defaultStack所定義的三個Intercepter截獲。這些Interceptor的任務之一就是把輸入參數設置到Action的對應屬性當中。
          如果我們需要加入對YourAction的屬性的驗證功能,只要把上述定義中的validation Interceptor加入到defaultStack中就可以了。當然,實際工作還沒有這么簡單,一般來說,還要為每個進行屬性驗證的Action的都配置一份validation.xml。
          XWork Interceptor能夠在Package和Action級別上,進行截獲處理。
          Servlet Filter能夠在URL Patten級別上,進行截獲處理。雖然實際上,Servlet Filter截獲的是Servlet,但某些情況下,可以達到和截獲一批Action的同樣效果。
          比如,在Web Work中,我們可以為所有admin package的Action,加入一個Interceptor,當檢查到當前Session的用戶沒有admin權限時,統一返回一個警告頁面:您沒有足夠的權限執行這個操作。
          我們看到也可以為所有URL Pattern為“admin/*.action”的URL定義一個Servlet Filter,當檢查到當前Session的用戶沒有admin權限時,統一返回一個警告頁面:您沒有足夠的權限執行這個操作。
          WebWork的Interceptor配置是相當靈活的,相當于對Action實現了AOP。Interceptor相當于Aspect,基類AroundInterceptor的before(), after()方法相當于Advice。
          另外,XWork也提供了從XML配置文件裝配Component的機制,相當于實現了對于Component的IoC。
           
                                                                         (申明:本文來源于網絡,摘錄于此,僅為日后方便查看)
          posted @ 2006-03-02 16:02 Live-in Java 閱讀(982) | 評論 (0)編輯 收藏

              和Webwork1.x不同,Webwork2的Action執行完后,其Result對應一個 Result Type,而這個Result Type完全可以根據具體應用或環境自己進行 定義,只需實現com.opensymphony.xwork.Result接口。Result Type使得Action的執行結果表現形式可以靈活多變!下面這會舉例說明,這里先看看Webwork2提供的幾種Result Type的定義,該定義在webwork-default.xml中,xwork.xml文件包含了該文件,自定義的Result Type可以直接寫在 xwork.xml中:
            <result-types>
              <result-type name="dispatcher" class="com.opensymphony.webwork.dispatcher.ServletDispatcherResult" default="true"/>
              <result-type name="redirect" class="com.opensymphony.webwork.dispatcher.ServletRedirectResult"/>
              <result-type name="velocity" class="com.opensymphony.webwork.dispatcher.VelocityResult"/>
              <result-type name="chain" class="com.opensymphony.xwork.ActionChainResult"/>
              <result-type name="xslt" class="com.opensymphony.webwork.views.xslt.XSLTResult"/>
              <result-type name="jasper" class="com.opensymphony.webwork.views.jasperreports.JasperReportsResult"/>
              <result-type name="freemarker" class="com.opensymphony.webwork.views.freemarker.FreemarkerResult"/>
            </result-types>
            其大多都有location和parse兩個參數,location指明action執行后接著去哪里,parse指明是否對location進行OGNL表達式解析。
           
            1) dispatcher
              action執行完后,請求會導向對應的View,Webwork2幕后其實是用RequestDispatcher來處理的,所以原Request/Response對象會接著傳遞,原Request中的Atrributes不會丟失,這點與下面的redirect是不同的。
           
            2) redirect
              對上次的響應將重定向到指定的位置,redirect是重新產生一個新的Request,原來Request保存的東西將不再有效,比如不能通過requet.getAtrribute 取得原來set的對象,也不能取得action的實例,errors,field errors等,因為Action是建立在Single-thread model上的。

            3) chain
              action鏈,特殊的View調用方式,一個action執行完接著調用另一個action。有個必須的參數actionName,指明緊接著調用的另一action對象。如:
              <result name="success" type="chain">
                  <param name="actionName">bar</param>
                  <param name="namespace">/foo</param>
              </result>
            執行后接著調用下面的action:
              <action name="bar" class="myPackage.barAction">
                  ...
              </action>

            4) velocity
            5) freemarker
            6) jasperreports
            7) xslt
              以上都是用不同技術的產生不同的View。

            下面我舉個自定義Result Type的示例,假如我有個Action testSendmail,根據處理結果將給指用戶發送一份email。自定義一個Result Type,實現Result接口。
             
              com.mycompany.webwork.example.SendmailResult
              有三個必須參數:from ,to, subject,一個可選參數 body。
            在xwork.xml中定義如下:
            <result-types>
              <result-type name="sendmail" class="com.mycompany.webwork.example.SendmailResult"/>
            </result-types>
           
            action定義:
            <action name="testSendmail" class="com.mycompany.webwork.example.TestSendMailAction">
              <result name="success" type="sendmail">
                  <param name="from">root@sina.com</param>
                  <param name="to">user@sina.com</param>
                  <param name="subject">hello,webwork!</param>
              </result>
              <result name="error" type="dispatcher">
                  <param name="location">error.jsp</param>
              </result>
            </action>
           
            SendmailResult.java

            package com.opensymphony.webwork.example;

            import com.opensymphony.xwork.ActionInvocation;
            import com.opensymphony.xwork.Result;

            public class SendmailResult implements Result {
              private String to;
              private String from;
              private String subject;
              private String body;

              public void execute(ActionInvocation invocation) throws Exception {
              //TODO 實現Email發送部分
              System.out.println("sending mail....");
              System.out.println("   To:" + to);
              System.out.println("   From:" + from);
              System.out.println("Subject:" + subject);
              }

              public String getBody() {
              return body;
              }

              public void setBody(String body) {
              this.body = body;
              }

              public String getFrom() {
              return from;
              }

              public void setFrom(String from) {
              this.from = from;
              }

              public String getSubject() {
              return subject;
              }

              public void setSubject(String subject) {
              this.subject = subject;
              }

              public String getTo() {
              return to;
              }

              public void setTo(String to) {
              this.to = to;
              }
            }

            寫個簡單的測試Action:
            package com.opensymphony.webwork.example;
           
            import com.opensymphony.xwork.ActionSupport;

            public class TestSendMailAction extends ActionSupport {
              public String execute() throws Exception {
                return SUCCESS;
              }
            }

            測試jsp,把它放在webwork-example/下:

            testsendmail.jsp

            <%@ taglib prefix="ww" uri="webwork" %>
            <html>
            <head><title>Test sendmail restul type</title></head>
            <body>
           
            <form action="testSendmail.action">
              <input type="Submit" value="Submit"/>
            </form>
            </body>
            </html>

                   (申明:本文來源于網絡,摘錄于此,僅為日后方便查看)
          posted @ 2006-03-02 15:45 Live-in Java 閱讀(1762) | 評論 (0)編輯 收藏

               摘要: 在osworkflow中最最核心的東西就是工作流定義的xml文件。盡管它并不是一定要定義成xml文件。但是xml格式是一種標準的通用的格式。OSWorkflow引擎只負責了“流程的運轉”,當然這個運轉會根據你所定義的Action和condtion來判斷。 這個xml文件為某一個給定的工作流進行描述steps、states,transitions,和functionality。下面闡述一下此xml...  閱讀全文
          posted @ 2006-03-02 11:48 Live-in Java 閱讀(1000) | 評論 (0)編輯 收藏

          銀狐999:http://blog.csdn.net/james999/archive/2004/10/29/158653.aspx
          gigix:????????? http://gigix.blogdriver.com/gigix/113138.html??
          http://dev2dev.bea.com.cn/bbs/jishudata/ArticleShow.jsp?Id=12#4_1_2

          posted @ 2006-03-02 10:12 Live-in Java 閱讀(211) | 評論 (0)編輯 收藏

          OGNL(Object Graph Navigation Language)TapestryOGNL結合的很完美。OGNL是一種Java表達式語言,它被用來讀取和更新對象的屬性。OGNL比建立在JSP2.0標簽庫之上的表達式語言更簡單功能也更強大。OGNL不僅僅提供屬性的訪問,它包括了精確的表達式和方法的調用。也能訪問類的靜態域。也可以創建新的對象,包括ListMap對象。簡單的OGNL表達式是屬性的名字。如:foo,這就等同于調用了方法getFoo()(或者是setFoo()如果表達式是用來更新屬性的)。當屬性的名字是連續的屬性名時,導航功能就起作用了。如:foo.bar.baz,它就等于getFoo().getBar().getBaz() 。不過要注意的是foobar這些屬性不能為空。 OGNL允許兩個對象(如頁和頁所包含的組件)來共享信息。

          posted @ 2006-03-01 11:43 Live-in Java 閱讀(1474) | 評論 (1)編輯 收藏

          僅列出標題
          共7頁: 上一頁 1 2 3 4 5 6 7 下一頁 
          主站蜘蛛池模板: 独山县| 广东省| 岳阳市| 双鸭山市| 云霄县| 潞城市| 吉木萨尔县| 林州市| 买车| 鄂尔多斯市| 堆龙德庆县| 玉林市| 仲巴县| 分宜县| 宁海县| 临江市| 漳平市| 灵石县| 手游| 海原县| 温泉县| 定日县| 浮梁县| 蛟河市| 若羌县| 开阳县| 淮南市| 双辽市| 营山县| 正镶白旗| 新营市| 渑池县| 莫力| 夏津县| 江口县| 静乐县| 二连浩特市| 赤壁市| 泰兴市| 涡阳县| 徐汇区|